{"_id":"power-claude","_rev":"60-e166e3befa9afb47b3ad565d6c18b3b5","name":"power-claude","dist-tags":{"latest":"3.0.138","v3-0-115":"3.0.115","v3-0-100":"3.0.100","v3-0-102":"3.0.102","v3-0-103":"3.0.103","v3-0-104":"3.0.104","v3-0-106":"3.0.106","v3-0-109":"3.0.109","v3-0-110":"3.0.110","v3-0-111":"3.0.111","v3-0-112":"3.0.112","v3-0-113":"3.0.113","v3-0-114":"3.0.114"},"versions":{"3.0.63":{"name":"power-claude","version":"3.0.63","keywords":["claude","vscode-extension"],"author":{"name":"neural-llm.io"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.63","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","dist":{"shasum":"f2f899b9d4b189efc94fc6858eecef6ddc523a91","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.63.tgz","fileCount":3,"integrity":"sha512-82g9DwOz5FOSWwLuE6IFS/xA8LgxOIWr3eX3iV22HhHVGBNI4OH/PCqqY4nALM+FQqSLp3yqp0FT+mHGRMrcYw==","signatures":[{"sig":"MEUCIDzBn2LDXaZb4ci1WwIF7bCvPMFXlJfEnt1cfi5pxqOeAiEAlesLvYepIRA1Jdh1JU9jssRqpuBCeQaXy3Dbj4/7z4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20276},"engines":{"node":">=18"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"_npmVersion":"10.8.2","description":"Power Claude is distributed as a VS Code extension. Install it from the VS Code Marketplace or Open VSX (search \"Power Claude\"). This npm entry is a placeholder and contains no runtime.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.63_1783034696906_0.5148078080173291","host":"s3://npm-registry-packages-npm-production"}},"3.0.76":{"name":"power-claude","version":"3.0.76","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.76","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"1cf7b40422c96495848056dbc1227eaa4aa007b9","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.76.tgz","fileCount":54,"integrity":"sha512-66S0xhjHUED1UAW6ct89RKECPBUkixbLzp453hayQKjRFANnsCQB0fZ2vEAuDR7P57bF3WCPHlsV/hPALXMO7w==","signatures":[{"sig":"MEQCIAk5QMHq0kFr8/RYPMnmXSTOk+VF7vEisB7/xRHpY8rtAiABNF4WX943/bHf4ymE58A/mtCyRCy+rnSPG5EfYXAAsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25777228},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"3230110c82bdf3c71f0b9494eecbeb9c3c3fa56e","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"mkdir -p dist; cp README.md dist/.README.prestrip 2>/dev/null || true; cp CHANGELOG.md dist/.CHANGELOG.prestrip 2>/dev/null || true; cp docs/marketplace/public/readme.md README.md; cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md; vsce package --no-dependencies --out dist/power-claude-$npm_package_version.vsix; cp dist/.README.prestrip README.md 2>/dev/null || true; cp dist/.CHANGELOG.prestrip CHANGELOG.md 2>/dev/null || true; rm -f dist/.README.prestrip dist/.CHANGELOG.prestrip; test -f dist/power-claude-$npm_package_version.vsix && bash scripts/release/audit-vsix.sh dist/power-claude-$npm_package_version.vsix && bash scripts/release/gate/portability.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"bash scripts/release/merge-drivers/register.sh","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Accounts"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Harness Flow Graph (pipeline visualizer)","command":"powerClaude.workflowFlow.open"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Accounts (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Accounts (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Accounts","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Accounts","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude orchestrates local Claude Code sessions — recovery, scheduling, and dashboards via official CLI transport.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nAdd a Claude Code profile with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins for the rotator to draw from."},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Start rotating","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Claude Code profile organization & session resilience for Claude Code — install, activate, add an account, and start rotating. Step bodies are generated from the onboarding SSoT (media/walkthrough/*.md via npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Local orchestration for Claude Code — session recovery, scheduling, worktrees, Token Saver, and dashboards via official CLI transport. Independent third-party software. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.76_1783698223454_0.3636329069046269","host":"s3://npm-registry-packages-npm-production"}},"3.0.77":{"name":"power-claude","version":"3.0.77","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.77","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"753cb04fffbc488be097cf1728bd723959673c78","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.77.tgz","fileCount":46,"integrity":"sha512-E2W+mH5t9dQBzDHBslp/3Bne64XuxsHUodybu5mcqVBz3hSLNAwnXzLRLJRkLqqjkRtjgu2NZjmzpxMFp/n5zA==","signatures":[{"sig":"MEUCICAwACsGqayz0XugT9kPxsL7XnH1ZdlfkH6uFwMPn4COAiEAkXZECIyjSBKraLzNU0XGGJDEkMyIwmK1bkyb/ImOtOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19845257},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"2aca19f099b29182493b4f1b4df75e706fbd1f7e","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"mkdir -p dist; cp README.md dist/.README.prestrip 2>/dev/null || true; cp CHANGELOG.md dist/.CHANGELOG.prestrip 2>/dev/null || true; cp docs/marketplace/public/readme.md README.md; cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md; vsce package --no-dependencies --out dist/power-claude-$npm_package_version.vsix; cp dist/.README.prestrip README.md 2>/dev/null || true; cp dist/.CHANGELOG.prestrip CHANGELOG.md 2>/dev/null || true; rm -f dist/.README.prestrip dist/.CHANGELOG.prestrip; test -f dist/power-claude-$npm_package_version.vsix && bash scripts/release/audit-vsix.sh dist/power-claude-$npm_package_version.vsix && bash scripts/release/gate/portability.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"bash scripts/release/merge-drivers/register.sh","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Accounts"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Harness Flow Graph (pipeline visualizer)","command":"powerClaude.workflowFlow.open"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Accounts (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Accounts (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Accounts","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Accounts","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude orchestrates local Claude Code sessions — recovery, scheduling, and dashboards via official CLI transport.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nAdd a Claude Code profile with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock Pro orchestration features."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add a Claude Code profile","description":"Link a Claude Code profile directory. Claude Code owns login; Power Claude stores metadata only."},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Set up profiles","description":"Organize Claude Code profiles for official CLI transport. Claude Code owns login."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Claude Code profile organization & session resilience for Claude Code — install, activate, add an account, and start rotating. Step bodies are generated from the onboarding SSoT (media/walkthrough/*.md via npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Local orchestration for Claude Code — session recovery, scheduling, worktrees, Token Saver, and dashboards via official CLI transport. Independent third-party software. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.77_1783701143163_0.6541900144443222","host":"s3://npm-registry-packages-npm-production"}},"3.0.80":{"name":"power-claude","version":"3.0.80","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.80","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"1e8245ad1c10f6e46507b7114b6c19c8e9d98586","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.80.tgz","fileCount":44,"integrity":"sha512-I3WbQRh6Mk3VbwPUPEsEduwCMpfs7x+g6D5grwvCjNNKHobg9kRfGbHxWmRNocilYmK+pjXwLNqxi+/RBPS8bA==","signatures":[{"sig":"MEQCICLtuLYMaDjJPqRD3h/zMrDJ7r/chKhE99wDkwdcQxJRAiACsYZvcqmw9/hjWbztaJFGW5wlE62zkmorFRj+3GgEng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28964076},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"80a76b3b8320e81960c6c808418819c8c486da9a","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const s='scripts/release/merge-drivers/register.sh';if(!existsSync(s))process.exit(0);const r=spawnSync('bash',[s],{stdio:'inherit'});process.exit(r.status??0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Harness Flow Graph (pipeline visualizer)","command":"powerClaude.workflowFlow.open"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude orchestrates local Claude Code sessions — recovery, scheduling, and dashboards via official CLI transport.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nAdd a Claude Code profile with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock Pro orchestration features."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add a Claude Code profile","description":"Link a Claude Code profile directory. Claude Code owns login; Power Claude stores metadata only."},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Set up profiles","description":"Organize Claude Code profiles for official CLI transport. Claude Code owns login."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Claude Code profile organization & session resilience for Claude Code — install, activate, add an account, and start rotating. Step bodies are generated from the onboarding SSoT (media/walkthrough/*.md via npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Local orchestration for Claude Code — session recovery, scheduling, worktrees, Token Saver, and dashboards via official CLI transport. Independent third-party software. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.80_1783808312531_0.715166620452856","host":"s3://npm-registry-packages-npm-production"}},"3.0.81":{"name":"power-claude","version":"3.0.81","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.81","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"ea6f815f5b500d95e4893b8d147f1a78e74f3799","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.81.tgz","fileCount":44,"integrity":"sha512-SugkCRSkb2Vp3ojyoGamTH6eksYxRiaeCrvlFTET8XFOXKojmUzMHyiovYiunMA9K58iEGenhnryf6D6ah9Q9Q==","signatures":[{"sig":"MEYCIQDtJ+wwG510S++WvvRuFUkrmv1X+Hk1qA3L3wUEjoYlIwIhANAB8a75BxBDzf6lNz5IsQYZ7lthVR/9chBK6aRYVSSc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29024718},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"c4f6dcfc9e764c9beb2fb5c6e3bee64e1b7c95a4","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const s='scripts/release/merge-drivers/register.sh';if(!existsSync(s))process.exit(0);const r=spawnSync('bash',[s],{stdio:'inherit'});process.exit(r.status??0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Harness Flow Graph (pipeline visualizer)","command":"powerClaude.workflowFlow.open"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude orchestrates local Claude Code sessions — recovery, scheduling, and dashboards via official CLI transport.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nAdd a Claude Code profile with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock Pro orchestration features."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add a Claude Code profile","description":"Link a Claude Code profile directory. Claude Code owns login; Power Claude stores metadata only."},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Set up profiles","description":"Organize Claude Code profiles for official CLI transport. Claude Code owns login."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Claude Code profile organization & session resilience for Claude Code — install, activate, add an account, and start rotating. Step bodies are generated from the onboarding SSoT (media/walkthrough/*.md via npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Local orchestration for Claude Code — session recovery, scheduling, worktrees, Token Saver, and dashboards via official CLI transport. Independent third-party software. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.81_1783970037821_0.8615510971773883","host":"s3://npm-registry-packages-npm-production"}},"3.0.82":{"name":"power-claude","version":"3.0.82","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.82","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"0ced54d38bd83f78c5b16258c70a30440d4bf42d","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.82.tgz","fileCount":44,"integrity":"sha512-QPXCJ9Dpnox4ERAvto/FG0HFueamyx/s+ZO4NhpkazZlJRncnp90OBcuT8Dd3UXddRt927hW+cVOeXzqt5SJ2w==","signatures":[{"sig":"MEUCIDI3lG9MJGmfS6+BAaISjCMDO1OsQWD2P64w3OVSV7VwAiEAtlfY7yarp6/baFcVfbSeKyLyZb2VZeTrcP73Bwfp9J4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29369191},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"d7b63e9f14c8fc3ef856daec8663387f3e6fb18c","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const s='scripts/release/merge-drivers/register.sh';if(!existsSync(s))process.exit(0);const r=spawnSync('bash',[s],{stdio:'inherit'});process.exit(r.status??0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Harness Flow Graph (pipeline visualizer)","command":"powerClaude.workflowFlow.open"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude orchestrates local Claude Code sessions — recovery, scheduling, and dashboards via official CLI transport.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nAdd a Claude Code profile with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock Pro orchestration features."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add a Claude Code profile","description":"Link a Claude Code profile directory. Claude Code owns login; Power Claude stores metadata only."},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Set up profiles","description":"Organize Claude Code profiles for official CLI transport. Claude Code owns login."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Claude Code profile organization & session resilience for Claude Code — install, activate, add an account, and start rotating. Step bodies are generated from the onboarding SSoT (media/walkthrough/*.md via npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Local orchestration for Claude Code — session recovery, scheduling, worktrees, Token Saver, and dashboards via official CLI transport. Independent third-party software. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.82_1783972564742_0.470893855955705","host":"s3://npm-registry-packages-npm-production"}},"3.0.86":{"name":"power-claude","version":"3.0.86","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.86","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"f7710a9e01aaa459b6696b20f805d96d48151ada","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.86.tgz","fileCount":55,"integrity":"sha512-TNDGCIuhv/g/o3EgH4Dl7LpzVQLqNqJjOe917p1/xyRbJu6LbiBa5dF4VdOd5wA/QoFfXAo729m87pDehVz3Gw==","signatures":[{"sig":"MEYCIQCU/trlArAVZblZl2GxBbVm97gl4Wijv4XNgCDTl0q6vQIhAJKWOdv+zp78B3svlcNesEyakIlEgjW0vohU4J94LRnq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37142158},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"3b6d24f987873ae5c0c1502b39936b905e284108","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp docs/marketplace/public/readme.md README.md && PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix; git checkout -- README.md 2>/dev/null || true","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Open Getting Started","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (optional)","description":"Default OFF. Enable only after a firm grey-area warning — or stay Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Multi-account continuity for Claude Code — install, activate, add accounts, choose Manual vs Auto-Rotation Engine (optional), safety controls. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default. Requires firm grey-area warning acknowledgment (CLI: pc rotation engine enable --i-understand). USE AT YOUR OWN RISK. See docs/product/rotation-modes.md.","markdownDescription":"Read-only mirror of opt-in state for discovery. **Enable via** `Power Claude: Enable Auto-Rotation Engine` (firm warning) or `pc rotation engine enable --i-understand`. Default OFF. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Spend less, run faster, never stall on Claude Code — save $115+/mo vs Max by pooling your Pro accounts, auto‑rotate past rate limits, auto‑resume dead sessions, cut token burn. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.86_1784073489468_0.7205454842372714","host":"s3://npm-registry-packages-npm-production"}},"3.0.88":{"name":"power-claude","version":"3.0.88","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.88","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"5562fa05dfcff0126759d5914347271966619906","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.88.tgz","fileCount":55,"integrity":"sha512-XrSX8G3KiqHr5z+45mp6gH7OtzYBbAmFsJSwc8RwSzHGMvA3MdSO4kx+P85fmz+fF4ettToKy01OFQptLq0ehw==","signatures":[{"sig":"MEUCIQClkwM8MObyklaIYVlkvwg0t4IZkxobPzLZsA+EOxptMgIgORnfqyXa+sy/Y3uDLoxmWkwYCgKMAbei+JGDndTAEAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37850251},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"7fae3a1e37a918c0551c9ca804ba18533527baea","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && (PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Multi-account continuity for Claude Code — install, activate, add accounts, enable Auto-Rotation Engine (recommended, after warning) or keep Manual, safety controls. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Spend less, run faster, never stall on Claude Code — save $115+/mo vs Max. Local orchestration via official CLI transport; auto-resume, Token Saver, multi-account continuity. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@resvg/resvg-js":"^2.6.2","@vscode/test-cli":"^0.0.10","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/release-tools":"^0.1.0","vscode-extension-tester":"^8.7.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.88_1784157822124_0.10044053953282361","host":"s3://npm-registry-packages-npm-production"}},"3.0.92":{"name":"power-claude","version":"3.0.92","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.92","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"994911eef01e3196135f6213820fa1f5ba6dee33","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.92.tgz","fileCount":55,"integrity":"sha512-eUXtsShCNIf7u905ZdVROBgWxy602pCNcXWYWxcnXIbKcLt8umgWZWkjCeeEtkh9sPRoiuUDlcJOhX3awLr7kw==","signatures":[{"sig":"MEUCIQCmZzvwZmgFrbydZOqywwWP+lp5N/hR3JynI+TJ/58yFwIgLBFs+V+LFp26WDd16lg1TbQFkYUTJ0WYF8dEp7J7ehc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37614763},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"1b1e9f12a9b5dd439f1b15c4fb255b1ebf443ba7","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/package-vsix.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && (PC_SKIP_PREPUBLISH=1 vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Multi-account continuity for Claude Code — install, activate, add accounts, enable Auto-Rotation Engine (recommended, after warning) or keep Manual, safety controls. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Spend less, run faster, never stall on Claude Code — save $115+/mo vs Max. Local orchestration via official CLI transport; auto-resume, Token Saver, multi-account continuity. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.92_1784227264674_0.6944525808862567","host":"s3://npm-registry-packages-npm-production"}},"3.0.94":{"name":"power-claude","version":"3.0.94","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.94","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"e429931ee3740314e8ff186f9ab0e7eca2a0ebd0","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.94.tgz","fileCount":59,"integrity":"sha512-hmUxY9DtxkBvqGuGwtxx0pq/1Zdq94D2nHuv0iOwXoJELTQG4d4bRmMjlxvunAiphejurxKnv8UR2e4vY3vpaQ==","signatures":[{"sig":"MEUCIQCoRP70QGgf0DyalMi21x/S4KpbOzLVPntfB4nWWCO/iAIgSbSDCkWFiJg/MxdTn5sb5Vp1IrK95mlAq1SfvZ4uh3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39439672},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"ac66642c2978904a6996210c24d67aaaf0ad72bd","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Spend less, run faster — save $115+/mo vs Max. Claude Code that keeps working when you walk away. Token Saver, auto-resume, multi-account continuity. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.94_1784448981153_0.6282306753580613","host":"s3://npm-registry-packages-npm-production"}},"3.0.97":{"name":"power-claude","version":"3.0.97","keywords":["claude-code","claude","anthropic","ai-agent","ai-coding-agent","coding-agent","ai-coding-assistant","ai-coding","agentic-ai","ai-assistant","ai-pair-programming","cursor","windsurf","llm","subagent","ai-tools","ai-productivity","auto-resume","claude-max","claude-pro","cost-tracking","token-analytics","parallel-dispatch","session-recovery","worktree","orchestration","claude-code-cli","local-first","job-scheduler","official-cli"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.97","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"4a8848b0b5892cb959543fd39e58b8c7b6653ac2","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.97.tgz","fileCount":59,"integrity":"sha512-STVRlgOVGZoEyvhGyH3olW+i9kdJOpBYlPtEI6OFkRBlRRORm9Ad8xj/A5GMUaESPpM5REE6hYCnxJd8HAnqvg==","signatures":[{"sig":"MEUCIQDMR+3UiBRovhDLl+Qh7JEwYhdKdR6VfzceutgDc6aCfAIgE2kSlAbOQTR2R+gaA0E25KpPyBgYR7+lDA0M1Rr7Bb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41166856},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"c55e3c2bd6ca5105d1065d215b87f6ed244dea08","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Spend less, run faster — save $115+/mo vs Max. Claude Code that keeps working when you walk away. Token Saver, auto-resume, multi-account continuity. Free to start.","directories":{},"displayName":"Power Claude","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.97_1784503633754_0.1960476579190258","host":"s3://npm-registry-packages-npm-production"}},"3.0.98":{"name":"power-claude","version":"3.0.98","keywords":["claude-code","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.98","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"e34fba3c3263a68ca5ae94b58804ff9e49f395b9","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.98.tgz","fileCount":59,"integrity":"sha512-+5qHCrOuobifb+IIWEaA+xGssJiUudsOPQ4F5clyE/G0XF8L7K6JQ1d/F5uj7R9rFlhM7/zaYgSoxIeWfIU0Yw==","signatures":[{"sig":"MEUCIQC6EpTV44P1NFANqXYZTbHb6P9stRGh6JUpVrfl2grGxQIgP18nhnn77aMXzK9LJFW/3/whYcBiJK3s+gLDmN/hTR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41041937},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"2d76702ddc0654fae6551d7f401668ad701c6c86","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"code --install-extension dist/power-claude-$npm_package_version.vsix --force","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version-check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Claude Code auto-resume, multi-account switcher & rate-limit relief. Save $115+/mo vs Max. Session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Claude Code Auto Resume","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.98_1784572108086_0.6619674559041182","host":"s3://npm-registry-packages-npm-production"}},"3.0.101":{"name":"power-claude","version":"3.0.101","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.101","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"fbb073d7e19f147d47de2a3be19dd4369c5c9a3c","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.101.tgz","fileCount":59,"integrity":"sha512-I+qh68fmBu5Je21alSroipyfWyuVmQJfMc3uQHEb2iFEhpvuVdLOrZjIAcpQdLj3kTbI91flBazfYqbVA/N9ew==","signatures":[{"sig":"MEQCIB0z5hOBEpWu5i2topUgd1qWwnFXbfAc+G3CJfVoOkXUAiAymZLHnhjx0D2apetDN2H0EfHEFmnZE/m62oKZ1jxguw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41294553},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"ac655ee6e5c38fadef2c2abc06260914e4fdc1ab","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search)","title":"Power Claude: Search Open Session Tabs","command":"powerClaude.searchOpenTabsQuickPick"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Search WITHIN your open Claude session tabs by conversation CONTENT — not just titles. When you have many sessions open and can't remember which one discussed a topic, type a phrase you remember and Power Claude streams each open session's transcript, ranks the matching turns, and previews the match with your query highlighted; one click reveals (foregrounds) that session's tab. Also available as a keybindable QuickPick (Search Open Session Tabs, default ctrl+alt+shift+s / cmd+alt+shift+s) and in the dashboard Sessions list with a toggle to widen the search to every indexed session. A Power Claude Pro feature; the reveal-tab action itself stays free. Note: VS Code does not allow one extension to scroll inside another's webview, so the highlighted content is rendered in Power Claude's own surfaces, not inside the Claude tab."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Claude Code auto-resume, multi-account switcher & rate-limit relief. Save $115+/mo vs Max. Session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Claude Code Auto Resume","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.101_1784597641857_0.6415008665292385","host":"s3://npm-registry-packages-npm-production"}},"3.0.105":{"name":"power-claude","version":"3.0.105","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.105","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"d93ec4047e7358de80e60c4338647d16a855be19","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.105.tgz","fileCount":59,"integrity":"sha512-2xqe1V8QfNoSss0sb1YGKwnHFN013E+nx+56lYihEz+a9cCQJrLA2XCr4q+L/eR/+3y8lKgR/ddvePAvxq6nWg==","signatures":[{"sig":"MEUCIFJktFlxVavY0wHB+MMbNbtC6bCDacPFpbY6oOh69XJwAiEAzLTz4z8WfYB1DANJvPJpOZwytVVF1hBoIX71tyHYGmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42001432},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"9552e9114e89333f0689db038650ff86ffbe35cd","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow","group":"navigation","command":"powerClaude.workflowFlow.open"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Flow","contextualTitle":"Harness Flow & Health"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Session Explorer","contextualTitle":"Sessions"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","contextualTitle":"Files Touched in Selected Session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Session Worktrees"}],"powerClaudeSecondary":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Dashboard","type":"webview"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Flow Explorer","command":"powerClaude.workflowFlow.open"},{"icon":"$(type-hierarchy)","title":"Power Claude: Flow Explorer","command":"powerClaude.flowExplorer.open"},{"icon":"$(type-hierarchy)","title":"Open Flow Explorer","command":"powerClaude.flowExplorer.openForSession"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Dashboard","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"title":"Open Sessions Lane View","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"title":"Refresh Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.tree","contents":"Power Claude rotates across your Claude accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account from the terminal with `pc add`."},{"view":"powerClaude.flow","contents":"Harness-level view: pipeline blueprint, fail-closed health (boot-style checks), and how hooks steer every agent — not a session analytics dump.\n[Open Harness Flow](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaudeSecondary","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard","onView:powerClaude.flow"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.105_1784746720358_0.6943088826084982","host":"s3://npm-registry-packages-npm-production"}},"3.0.107":{"name":"power-claude","version":"3.0.107","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.107","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"63802b63404ef592ee158917003cb6d04a0209f7","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.107.tgz","fileCount":59,"integrity":"sha512-dyc5iRjDLC4UK1NlAQSMDcTdSx2EdS0FIkSWwvLIxlgzCY7Uugen9k0Dy6ut0HhGl1qTC2NvkUVXc17/thaung==","signatures":[{"sig":"MEYCIQC+ej2CiM79upHFoNPynhbcpMt6B7SlZmRNDBWmZf9QuAIhALsyfYr1ZsmeN+RfKLam4DeMXPN5OUNpSQK3N0LgNDdC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41763746},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"bac0be5b5cba411cbcdd333164a2db17bd12bf5c","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboard","contents":"**Home** — is the pool OK *right now*? Fleet health, accounts summary, and deep tabs (Sessions table, Usage, Settings).\nPrimary places: **Home** · **Sessions** (find & resume) · **Profiles** (logins).\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)\n[Sessions Tree](command:powerClaude.sessions.openTree)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard","onView:powerClaude.flow"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.107_1785198830154_0.0057418222522886975","host":"s3://npm-registry-packages-npm-production"}},"3.0.108":{"name":"power-claude","version":"3.0.108","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.108","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"841eaea65817577086d21ba0339e1b58672398fc","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.108.tgz","fileCount":59,"integrity":"sha512-sH0fz98W1BEMAtpF4vkZVCwrsK97xKYf0lsr5cAJDGZA0PzhxuqK1VmSVSFp5Yt5qPfhgX91u05TbBpHVOU3jg==","signatures":[{"sig":"MEUCIQDfiv804mMcp4eGwVTMyaw5nyrL77XtoOWptL7+hUfmpwIgP8PRUsI3mkdxs+ewR7f470R6NMe7lc9OpR3QACTqmvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41696865},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"c55ccbc9b901f98818bee819d69c388b36f7b949","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"mkdir -p dist && cp README.md dist/.README.prestrip.dev && cp CHANGELOG.md dist/.CHANGELOG.prestrip.dev && cp package.json dist/.package.json.prestrip.dev && cp docs/marketplace/public/readme.md README.md && cp docs/marketplace/public/CHANGELOG.public.md CHANGELOG.md && node -e \"const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));delete p.files;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\" && (PC_SKIP_PREPUBLISH=1 npx vsce package --no-dependencies --out dist/power-claude-$npm_package_version-dev.vsix); STATUS=$?; cp dist/.README.prestrip.dev README.md 2>/dev/null; cp dist/.CHANGELOG.prestrip.dev CHANGELOG.md 2>/dev/null; cp dist/.package.json.prestrip.dev package.json 2>/dev/null; rm -f dist/.README.prestrip.dev dist/.CHANGELOG.prestrip.dev dist/.package.json.prestrip.dev; exit $STATUS","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboard","contents":"**Home** — is the pool OK *right now*? Fleet health, accounts summary, and deep tabs (Sessions table, Usage, Settings).\nPrimary places: **Home** · **Sessions** (find & resume) · **Profiles** (logins).\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)\n[Sessions Tree](command:powerClaude.sessions.openTree)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard","onView:powerClaude.flow"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.108_1785255521508_0.1548269567548961","host":"s3://npm-registry-packages-npm-production"}},"3.0.116":{"name":"power-claude","version":"3.0.116","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.116","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"29ee05b62e526d003aee27e5cfbf659aae3d5bea","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.116.tgz","fileCount":63,"integrity":"sha512-REcju2YW2avmLUJ1gEdPPVniF2SdWEWWutInf8KQQCJC3kawLWQ+o0V45cNzSESZeidwm1I62zNkTBxgus9B7A==","signatures":[{"sig":"MEYCIQCb+S5O5uWBGYnobShqy8DtBhuIHTtb6QRZC4J/NLHz2wIhAOTMv9EjcG+0Tald2cl4vo1c8Be0Y2Z3ZdoSJRfby2sl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43294526},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"gitHead":"49a902c6781c15e330ae1343d76cdc8bb6988faf","pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboard","contents":"**Home** — is the pool OK *right now*? Fleet health, accounts summary, and deep tabs (Sessions table, Usage, Settings).\nPrimary places: **Home** · **Sessions** (find & resume) · **Profiles** (logins).\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)\n[Sessions Tree](command:powerClaude.sessions.openTree)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","glob":"^10.3.10","mocha":"^10.7.3","eslint":"^9.0.0","vitest":"^1.6.0","esbuild":"^0.21.0","stylelint":"^16.0.0","typescript":"^5.3.0","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/node":"^20.0.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/dom":"^0.1.1","@types/mocha":"^10.0.6","@vscode/vsce":"2.22.0","@types/vscode":"^1.80.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/stats":"^0.1.0","@cj-hurc/trace":"^0.1.2","@cj-hurc/format":"^0.1.0","@resvg/resvg-js":"^2.6.2","@cj-hurc/js-core":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/session":"^0.1.0","@vscode/test-cli":"^0.0.10","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/token-tree":"^0.1.2","@cj-hurc/webview-ui":"^0.3.0","@vitest/coverage-v8":"^1.6.0","@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/shell-runner":"^0.1.0","@vscode/test-electron":"^2.4.1","javascript-obfuscator":"^4.2.2","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/workflow-graph":"^0.1.2","vscode-extension-tester":"^8.7.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.1","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/workflow-kernel":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/stylelint-plugin":"^0.2.0","@typescript-eslint/parser":"^8.0.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/workflow-projection":"^0.1.1","@typescript-eslint/eslint-plugin":"^8.0.0"},"activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.dashboard","onView:powerClaude.flow"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.116_1785533811137_0.5413303454592706","host":"s3://npm-registry-packages-npm-production"}},"3.0.115":{"name":"power-claude","version":"3.0.115","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.115","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"a68203885db8ac1b9c5ccf6834ab492ab89a44b4","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.115.tgz","fileCount":15,"integrity":"sha512-GjBHBeR0+c19OSwuEsorqLVCQSFWpl0KVY0DReawAVljJZcy3WLgofg45aVxcp4b1wSHPjDt4sAMlrbHxwbbRw==","signatures":[{"sig":"MEQCIGmNSExMrDfVKyZy0ZoaKpeyr2ERm2JMxKPHtZ7p+brQAiBu1cUzUKJ+qJhTXoXZRETHtrEbZsBvQZ7ff7juajYIkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15421308},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.115_1785885280696_0.49414080925525106","host":"s3://npm-registry-packages-npm-production"}},"3.0.100":{"name":"power-claude","version":"3.0.100","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.100","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"4ea198b26bf17b7edea3966d137392e510af0c2b","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.100.tgz","fileCount":15,"integrity":"sha512-kUK93yAHyzKJ561JN/kZJP3jes6YgrpxSJWCXh1ogk5xbMLLHfiYZvA5mMOKYT+1X+wROAzUhmGpRqM6NWHFcQ==","signatures":[{"sig":"MEQCIE4UaOmvDNb0k0ToFnYsPENvDRIBALJCmMvSegtrYgiJAiBzFHVk9apvZ9vLD8bxEyPOtoJwTLHwCzVMzRIGZz8/6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13446675},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.100_1785885331172_0.666114311753627","host":"s3://npm-registry-packages-npm-production"}},"3.0.102":{"name":"power-claude","version":"3.0.102","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.102","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"c92198760111beb86afc02be57d704245cf0e084","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.102.tgz","fileCount":15,"integrity":"sha512-7iCIc0AJ9dhxBkBKXpcWagsXjQwlO1gDbQ4ZsZkDxhKuTzpesROaIpTf8Vut6a8okAy6K4XW+x9jHGc1V4tHjA==","signatures":[{"sig":"MEYCIQDt1RZ7P1sJLVuRMm1DNw2QzMaQXZxpO1wGXS9WMnJqfgIhAMBttLs6ffCSIkvFuh0pTxWNq5MAEmMXxIRIpBjvs2kX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14478724},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.102_1785885398579_0.7864993105435125","host":"s3://npm-registry-packages-npm-production"}},"3.0.103":{"name":"power-claude","version":"3.0.103","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.103","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"a3cd0782a812f2b0b47662354e3b7d8737d1f6f2","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.103.tgz","fileCount":15,"integrity":"sha512-1V29ThkiQuDqtqnIEBAaQQhg3rUuYUbbvR0LvWeebcqxirXl1daMtwYIW4WPCfrc7FcdPWr7rADvT2drDUafgw==","signatures":[{"sig":"MEUCICnVefSLWFh/kcDvVq4aOxbssdldFHnzizbhm9zq4b7xAiEAl0zmZo1vd4hXRiGv+lbbbp2CpgE9fo87miIyODM5eq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14219329},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.103_1785885463938_0.12415620042114983","host":"s3://npm-registry-packages-npm-production"}},"3.0.104":{"name":"power-claude","version":"3.0.104","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.104","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"6a6a50d2cc36535ca984f81e6d378445612c91d5","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.104.tgz","fileCount":15,"integrity":"sha512-Q5QvmCEnxXczM16mralHIa13kejDRfzDLwMiI7ZD+kn/GrVqNWVc5WLu0AdB3wvfXF9k44isjnYO0S8U0HsVAA==","signatures":[{"sig":"MEUCIDw4IY5vdb2JO/AbX4mukZmbu04CIkU+yqZ4bIrpSwQeAiEAjPi+SRzqQB9tBn+Q5MyvCrs81Ac20fd9b4XVuNRyCq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14158225},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.104_1785885530746_0.71465714457932","host":"s3://npm-registry-packages-npm-production"}},"3.0.106":{"name":"power-claude","version":"3.0.106","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.106","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"9e07e5e977101d012437391e95e8c3815462977c","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.106.tgz","fileCount":15,"integrity":"sha512-L5/ZXG4GrIt2hFalaWe/ViYsUwrJ2eqyXlyNDMLCjOGAoZk0LvduQ19PSKavuUtipn8cSYTlmh6metVrwUTTlA==","signatures":[{"sig":"MEQCIA5wb4QiqKAdiKgoX60aATLAE3jxMZ+NzjcRAxeE/gtxAiAWr+zPENxFf8CDdRsvh8fZyGUClKDSegghVjeq2D8htg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14354023},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.106_1785885596076_0.35359289003029226","host":"s3://npm-registry-packages-npm-production"}},"3.0.109":{"name":"power-claude","version":"3.0.109","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.109","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"5ed69a35c87160b351487279f9a80d6b8ccd3e87","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.109.tgz","fileCount":15,"integrity":"sha512-pbi5qjLxqdqUhMDtLiD45CugJKqjFAGdHta7NuBaqbTbtfpvH6IXBB1vyiwRoQqQ2gf96f5klo3P58/CICXzFw==","signatures":[{"sig":"MEYCIQDFoe3r8V1JxyTdnO2ZztAXCXSLmxkhi2X4AanXiZrzhAIhAOHxyqPD8II0v8Ku+FyKcWwvj+ER9SJCQ4qZrb5h9cxH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14679409},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.109_1785885611969_0.43328911147142435","host":"s3://npm-registry-packages-npm-production"}},"3.0.110":{"name":"power-claude","version":"3.0.110","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.110","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"a9adff9b342cc862bc44e8633051c4c7406df1c8","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.110.tgz","fileCount":15,"integrity":"sha512-1S6qXyihmTCep0MXpj4lo/Zhl7iktC3WxMrP8b02slFx1CsBmlLhkN8NJo3Wfq0Vs8Z27CvSfXIC0Y5vyiXOiw==","signatures":[{"sig":"MEUCICtIFkjmeiopFKocpvApfNGF3fN28Tc8+AxXRQ2GT2ZhAiEA0IXLNpKFjNPZR5rkvGJvXz5UI1kvLEdZdF1wcjcR7lA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15195871},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.110_1785885678758_0.7142160362769066","host":"s3://npm-registry-packages-npm-production"}},"3.0.111":{"name":"power-claude","version":"3.0.111","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.111","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"acde95cdb7bbdde1a2c4c46ed22a28f0efa8c577","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.111.tgz","fileCount":16,"integrity":"sha512-x8zjKFysEcmKY2DPUU0FdkKtD2BPNGWcI7STZu3i22GRg/QIKtiwylqm+qc3TJXGEYCDxWCraltUOlxcp+rE9w==","signatures":[{"sig":"MEYCIQCIJYe+Aie9pmdGJfSG6cFUaDdKeKBuI7ReXN/cQs9XoQIhAOys8nNXhzAQ5HZph2mFJJ+vBFkL6eQEjDu5OWbXOt3Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20119702},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.111_1785885745824_0.03993396861545628","host":"s3://npm-registry-packages-npm-production"}},"3.0.112":{"name":"power-claude","version":"3.0.112","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.112","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"8d5a94de16797a0e1121b688c43c592f3d226446","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.112.tgz","fileCount":15,"integrity":"sha512-DLh1cTohLpx0m/FV87m3qZwk97dJlNuGeSDvdAa1ZFL5qGqOI4Lu1gqyfvLLbM+4bMkRjjbxwohhkeUUdYMXZg==","signatures":[{"sig":"MEQCID5j6XxBNEy3IXmmb4BFny3o7iiR1g3IcENswz1pcYr1AiB5rn7cFc5KCWkM3OezQVhH/txHFX/HmDUXERKU2fpHew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15169592},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.112_1785885813097_0.31259976644259413","host":"s3://npm-registry-packages-npm-production"}},"3.0.113":{"name":"power-claude","version":"3.0.113","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.113","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"64df8cba0f162fa7e2c50eaa11d59a5f2ae1af5d","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.113.tgz","fileCount":15,"integrity":"sha512-xoZfcyQTDGViDtC4mjANTf/eyQq0nBcRyv0xGrLOzCHaQ6xVTQ3Ns2tn9DXctd0epr5qo+r8Ta1YEQh8smxuSA==","signatures":[{"sig":"MEQCIEC/1vEvKRLQjn2o5Rq9M8O5UjeOQ9EbbPHjDPDfoOAQAiBkCqqgDnUq04+Z0knyVTblHrWP8HMTzVj6FyAfMGbiFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15272920},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.113_1785885831593_0.34256550590461843","host":"s3://npm-registry-packages-npm-production"}},"3.0.114":{"name":"power-claude","version":"3.0.114","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm"],"author":{"url":"https://neural-llm.com","name":"Neural-LLM","email":"support@neural-llm.com"},"license":"SEE LICENSE IN LICENSE","_id":"power-claude@3.0.114","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"bin":{"pc":"bin/power-claude-cli.js","power-claude":"bin/power-claude-cli.js"},"qna":"marketplace","dist":{"shasum":"1bf0f42c110cfedf5201898755416256ca15c3da","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.114.tgz","fileCount":15,"integrity":"sha512-BGrHQ9I3edZdpxzCkP8MU+AKKxyq5kkqbOwbWkCK17inXcLytgdHUxnshVo68koA9r1r2LZXTZ4GDp0RWMCfDg==","signatures":[{"sig":"MEUCIAZQsWgyE7CmwgZuINPk3kdLrTSelhE+qDQl/17kPGNnAiEAq966lQ2NlNxefmWqtZZF7dqzRKQHLbGe3jecvyHtbFg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15336618},"icon":"media/icon.png","main":"./out/extension.js","badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"engines":{"node":">=20.0.0","vscode":"^1.80.0"},"pricing":"Free","scripts":{"test":"vitest run","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","watch":"npm run inject:version && node esbuild.config.mjs --watch","deploy":"npm run package && npm run install:vscode","verify":"bash scripts/verify/run.sh","compile":"tsc -p ./ --noEmit","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","package":"bash scripts/release/vsix/package.sh","protect":"node scripts/build/protect.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","embed:key":"node scripts/build/embed-public-key.js","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:unit":"npm run test:prepublish","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","gen:readme":"node scripts/build/install-channels.mjs --write","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","test:watch":"vitest","dedup:check":"node devtools/dedup/check.mjs","deploy:both":"npm run package:both && npm run install:dev","gen:savings":"node scripts/build/savings-model.mjs --write","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","lint:mirror":"node scripts/build/mirror-lint.mjs","pack:engine":"node scripts/build/pack-runtime-shell.mjs","package:dev":"bash scripts/build/package-dev.sh","postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","sync:public":"scripts/release/sync-public.sh","test:replay":"bash test/replay/run-replay-suite.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","package:both":"npm run package && npm run build:dev && npm run package:dev","release:bump":"scripts/release/bump.sh","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","check:savings":"node scripts/build/savings-model.mjs --check","compile:tests":"tsc -p test/tsconfig.json","deploy:cursor":"npm run package && npm run install:cursor","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","release:check":"scripts/release/pre-publish-check.sh","test:coverage":"vitest run --coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:workflow":"vitest run --config vitest.config.workflow.ts","inject:version":"bash scripts/build/inject-version.sh","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","test:messaging":"bash test/messaging/roundtrip.sh","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","emit:onboarding":"node scripts/build/emit-onboarding.mjs","register:hashes":"node scripts/build/register-code-hashes.mjs","release:dry-run":"scripts/release/bump.sh --dry-run","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","embed:engine-key":"node scripts/build/embed-engine-key.js","release:bump:tag":"scripts/release/bump.sh --tag","sync:public:push":"scripts/release/sync-public.sh --push","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","verify:protected":"node scripts/build/verify-protected.js","vscode:uninstall":"node ./out/uninstall-hook.js","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:system-index":"node scripts/build/emit-system-index.mjs","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","verify:invariants":"bash scripts/verify/run.sh --invariants-only","vscode:prepublish":"bash scripts/release/prepublish.sh","check:system-index":"node scripts/build/emit-system-index.mjs --check","deploy:code-server":"npm run package && npm run install:code-server","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:workflow:shell":"bats test/workflow/shell/ --recursive","test:sandbox:install":"bash sandbox/run.sh","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","release:version-check":"scripts/release/version/check.sh","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","test:integration:xvfb":"xvfb-run -a npm run test:integration","test:sandbox:multihost":"bash scripts/sandbox/verify-multihost-accounts-ui.sh","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code-server-real.playwright.test.ts","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh"},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"publisher":"neural-llm","categories":["AI","Machine Learning","Visualization","Other"],"repository":{"url":"git+https://github.com/neural-llm-io/power-claude.git","type":"git"},"_npmVersion":"10.9.8","contributes":{"menus":{"view/title":[{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@1","command":"powerClaude.rescan"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.tree","group":"navigation@2","command":"powerClaude.refresh"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.sessions.openList"},{"when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0.5","command":"powerClaude.sessions.openTree"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@1","command":"powerClaude.searchSessions"},{"when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5","command":"powerClaude.searchOpenTabsQuickPick"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@1.7","command":"powerClaude.sessions.openLane"},{"when":"view == powerClaude.sessionExplorer","group":"navigation@2","command":"powerClaude.openMultiSessionGraph"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3","command":"powerClaude.resumeStalledSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@3.5","command":"powerClaude.crossModelSessions"},{"when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@4","command":"powerClaude.warmAllSessionTabs"},{"when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2","group":"navigation@0","command":"powerClaude.workflowFlow.open"},{"when":"view == powerClaude.flow","group":"navigation@1","command":"powerClaude.flow.sidebar.refresh"},{"when":"view == powerClaude.flow","group":"navigation@2","command":"powerClaude.harnessHealth.refresh"}],"view/item/context":[{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1","command":"powerClaude.sessionResume"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2","command":"powerClaude.sessionResumeWithPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1","command":"powerClaude.openSessionDetail"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2","command":"powerClaude.openSessionGraph"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.flowExplorer.openForSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1","command":"powerClaude.copySessionId"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2","command":"powerClaude.copySessionName"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3","command":"powerClaude.copySessionFirstPrompt"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3","command":"powerClaude.openPreCommitReview"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1","command":"powerClaude.addSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2","command":"powerClaude.togglePinSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4","command":"powerClaude.setSessionStatus"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3","command":"powerClaude.removeSessionTag"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1","command":"powerClaude.archiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2","command":"powerClaude.unarchiveSession"},{"when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3","command":"powerClaude.exportSession"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1","command":"powerClaude.openTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2","command":"powerClaude.diffTouchedFile"},{"when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1","command":"powerClaude.copyTouchedFilePath"}]},"views":{"powerClaude":[{"id":"powerClaude.commandCenterV3","icon":"media/icon-activity.svg","name":"Home","type":"webview","contextualTitle":"Power Claude — Home (Command Center 3.0 · isolated Model context)"},{"id":"powerClaude.dashboardV2","icon":"media/icon-activity.svg","name":"Home · View 2.0","type":"webview","contextualTitle":"Power Claude — View 2.0 (compare / transitional)"},{"id":"powerClaude.dashboard","icon":"media/icon-activity.svg","name":"Home · Classic","type":"webview","when":"config.powerClaude.ui.showClassicHome","contextualTitle":"Power Claude — Classic Home (compare only)"},{"id":"powerClaude.sessionExplorer","icon":"media/icon-activity.svg","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane"},{"id":"powerClaude.tree","icon":"media/icon-activity.svg","name":"Profiles","contextualTitle":"Accounts & Profiles"},{"id":"powerClaude.flow","icon":"media/icon-activity.svg","name":"Harness Flow","contextualTitle":"Harness Flow (pipeline · health · clients — not sessions)"},{"id":"powerClaude.filesTouched","icon":"media/icon-activity.svg","name":"Files Touched","when":"powerClaude.sessionExplorerHasSelection","contextualTitle":"Sessions inspector — files in the selected session"},{"id":"powerClaude.sessionLauncher","icon":"media/icon-activity.svg","name":"Session Worktrees","when":"powerClaude.hasSessionWorktrees","contextualTitle":"Sessions inspector — worktrees for this workspace"}],"powerClaudeRail":[{"id":"powerClaude.railHome","icon":"media/icon-activity.svg","name":"Open →","contextualTitle":"Open Power Claude (right panel)"}]},"colors":[{"id":"powerClaude.badge.enabled","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Power Claude brand-stamp badge — feature enabled."},{"id":"powerClaude.badge.disabled","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Power Claude brand-stamp badge — feature disabled."},{"id":"powerClaude.session.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Session state — active (Claude's last turn complete, awaiting user)."},{"id":"powerClaude.session.processing","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Session state — processing (Claude is mid-message / streaming a response)."},{"id":"powerClaude.session.completed","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Session state — completed (all tasks done)."},{"id":"powerClaude.session.abandoned","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Session state — abandoned (left mid-task, no recent activity)."},{"id":"powerClaude.session.stale","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Session state — stale (idle past the stale threshold)."},{"id":"powerClaude.session.archived","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Session state — archived."},{"id":"powerClaude.status.active","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"},"description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows."},{"id":"powerClaude.status.busy","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"},"description":"Status palette - working / in progress (blue)."},{"id":"powerClaude.status.ok","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"},"description":"Status palette - healthy / done / passing (green)."},{"id":"powerClaude.status.warn","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"},"description":"Status palette - caution / needs review (amber)."},{"id":"powerClaude.status.error","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"},"description":"Status palette - blocking / failed / critical (red)."},{"id":"powerClaude.status.neutral","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"},"description":"Status palette - idle / inactive / unknown (grey)."}],"commands":[{"icon":"$(refresh)","title":"Power Claude: Refresh","command":"powerClaude.refresh"},{"icon":"$(star)","title":"Power Claude: Leave a Review","command":"powerClaude.leaveReview"},{"icon":"$(pulse)","title":"Power Claude: Session Actions","command":"powerClaude.sessionActions.menu"},{"icon":"$(rocket)","title":"Power Claude: Run Setup Guide (Onboarding)","command":"powerClaude.showWelcome"},{"icon":"$(book)","title":"Power Claude: Open Documentation","command":"powerClaude.openDocs"},{"icon":"$(settings-gear)","title":"Power Claude: Token Saver (optimizer slider)","command":"powerClaude.tokenSaver.open"},{"icon":"$(gear)","title":"Power Claude: Open Settings","command":"powerClaude.openSettings","category":"Power Claude"},{"icon":"$(sparkle)","title":"Power Claude: Calibrate a setting (Interactive Mode)","command":"powerClaude.calibrate.openModal"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.workflowFlow.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Harness Flow Explorer","command":"powerClaude.flowExplorer.open","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Open Session Path in Harness Flow","command":"powerClaude.flowExplorer.openForSession","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Finish Stalled Sessions","command":"powerClaude.resumeStalledSessions"},{"icon":"$(git-compare)","title":"Power Claude: Cross-Model Hanging Sessions","command":"powerClaude.crossModelSessions"},{"icon":"$(symbol-color)","title":"Power Claude: Show Status Color Legend","command":"powerClaude.statusLegend"},{"icon":"$(history)","title":"Power Claude: Auto-Resume Audit","command":"powerClaude.autoResumeAudit"},{"title":"Power Claude: Check for Updates","command":"powerClaude.updateNotifier.checkNow"},{"title":"Power Claude: Reset Update Notifier (re-enable prompts)","command":"powerClaude.updateNotifier.resetSuppression"},{"title":"Power Claude: Show Home","command":"powerClaude.showWebview"},{"title":"Power Claude: Open data.json","command":"powerClaude.openDataFile"},{"icon":"$(play)","title":"Power Claude: Rescan claude-auth (rebuild data.json)","command":"powerClaude.rescan"},{"title":"Power Claude: Link Account (open OAuth browser)","command":"powerClaude.linkAccount"},{"title":"Power Claude: Refresh Account (force OAuth refresh)","command":"powerClaude.refreshAccount"},{"title":"Power Claude: Re-login Account (start OAuth)","command":"powerClaude.reloginAccount"},{"title":"Power Claude: Repair Account Identity (verify token → real account)","command":"powerClaude.repairAccount"},{"title":"Power Claude: Verify All Account Identities & Refresh Quota","command":"powerClaude.verifyIdentities"},{"title":"Power Claude: Pin Account","command":"powerClaude.pinAccount"},{"title":"Power Claude: Unpin Account","command":"powerClaude.unpinAccount"},{"title":"Power Claude: Activate Account","command":"powerClaude.activateAccount"},{"title":"Power Claude: Remove Account","command":"powerClaude.removeAccount"},{"icon":"$(export)","title":"Power Claude: Export Profiles (to a file)","command":"powerClaude.exportAccounts"},{"icon":"$(import)","title":"Power Claude: Import Profiles (from a file)","command":"powerClaude.importAccounts"},{"title":"Power Claude: Stop Session Auto-Resume","command":"powerClaude.stopSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Resume Session Auto-Resume","command":"powerClaude.resumeSessionAutoResume","category":"Power Claude"},{"title":"Power Claude: Re-login ALL Expired Profiles","command":"powerClaude.reloginAllExpired"},{"title":"Power Claude: Force Heal All Profiles","command":"powerClaude.forceHeal"},{"title":"Power Claude: Toggle Rotation Master Switch","command":"powerClaude.toggleRotation"},{"title":"Power Claude: Toggle Throttle-Only Mode","command":"powerClaude.toggleThrottleOnly"},{"title":"Power Claude: Open Activity Feed","command":"powerClaude.openActivity"},{"title":"Power Claude: Copy CLI Command","command":"powerClaude.copyCommand"},{"title":"Power Claude: Open claude.ai for this account","command":"powerClaude.openClaudeAi"},{"title":"Power Claude: Run claude-health","command":"powerClaude.health"},{"title":"Power Claude: List Profiles","command":"powerClaude.profiles"},{"title":"Power Claude: Tail Rate-Limit Logs","command":"powerClaude.tailHandler"},{"icon":"$(beaker)","title":"Power Claude: Self-Diagnostics (auto-resume report)","command":"powerClaude.selfDiagnostics","category":"Power Claude"},{"title":"Power Claude: Run CLI Command","command":"powerClaude.runCommand"},{"title":"Power Claude: Open History Snapshot","command":"powerClaude.openSnapshot"},{"title":"Power Claude: Open Git Commit","command":"powerClaude.openGitCommit"},{"title":"Power Claude: Show Per-Account Handler Events","command":"powerClaude.openAccountLogs"},{"title":"Power Claude: Snapshot Active Sessions","command":"powerClaude.snapshotSessions"},{"title":"Power Claude: Resume Saved Sessions","command":"powerClaude.resumeSavedSessions"},{"title":"Power Claude: Open Session Tab (no prompt injection)","command":"powerClaude.openSessionTab"},{"icon":"$(search-fuzzy)","title":"Power Claude: Power Search Sessions","command":"powerClaude.searchOpenTabsQuickPick","category":"Power Claude"},{"title":"Power Claude: Reinstall Claude Code Extension (guide)","command":"powerClaude.reinstallClaudeCodeExtension","category":"Power Claude"},{"icon":"$(run-all)","title":"Power Claude: Load All Session Tabs","command":"powerClaude.warmAllSessionTabs"},{"title":"Power Claude: Rename Session","command":"powerClaude.setSessionTitle"},{"icon":"$(history)","title":"Power Claude: Show Message Timeline (your messages, with times)","command":"powerClaude.openMessageTimeline"},{"title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)","command":"powerClaude.restoreClaudeCodeToStock"},{"title":"Power Claude: Enable Claude Code Enhancements","command":"powerClaude.enableClaudeCodeMods"},{"title":"Power Claude: Resume Session Tab (inject wake-up prompt)","command":"powerClaude.resumeSessionTab"},{"title":"Power Claude: Resume Session in Terminal (CLI mode)","command":"powerClaude.resumeSessionInTerminal"},{"title":"Power Claude: Clear Saved Sessions Snapshot","command":"powerClaude.clearSavedSessions"},{"title":"Power Claude: Switch Active Account to Soonest-Recovering","command":"powerClaude.switchToSoonest"},{"title":"Power Claude: Toggle Auto-Select Soonest Account","command":"powerClaude.toggleAutoSelectSoonest"},{"title":"Power Claude: Toggle Auto-Resume Sessions on Startup","command":"powerClaude.toggleAutoResumeSessions"},{"title":"Power Claude: Toggle Detached Sessions (experimental)","command":"powerClaude.toggleDetachedSessions"},{"title":"Power Claude: Run Session Detached (keeps running on refresh)","command":"powerClaude.detached.run"},{"title":"Power Claude: Stop Detached Session","command":"powerClaude.detached.stop"},{"title":"Power Claude: List Detached Sessions","command":"powerClaude.detached.list"},{"title":"Power Claude: Run Setup & Optimize Wizard","command":"powerClaude.runSetupWizard"},{"title":"Power Claude: Toggle Your Request Banner","command":"powerClaude.toggleYourRequestBanner"},{"title":"Power Claude: Open LLM Usage Dashboard","command":"powerClaude.openUsageWebview"},{"title":"Power Claude: Refresh Usage Data","command":"powerClaude.refreshLlmUsage"},{"title":"Power Claude: Open prices.json","command":"powerClaude.openLlmUsagePrices"},{"title":"Power Claude: Open data.json (LLM usage)","command":"powerClaude.openLlmUsageData"},{"title":"Power Claude: Open anchors.json (rate-limit cap-hits)","command":"powerClaude.openLlmUsageAnchors"},{"title":"Power Claude: Save Usage Prices","command":"powerClaude.saveLlmUsagePrices"},{"title":"Power Claude: Reset LLM Usage prices to Anthropic defaults","command":"powerClaude.resetLlmUsagePrices"},{"title":"Power Claude: Add LLM Usage account override","command":"powerClaude.addLlmUsageOverride"},{"title":"Power Claude: Remove Usage Account Override","command":"powerClaude.removeLlmUsageOverride"},{"title":"Power Claude: Change plan for LLM Usage account","command":"powerClaude.changeLlmUsageAccountPlan"},{"icon":"$(search)","title":"Power Claude: Search Sessions","command":"powerClaude.searchSessions"},{"icon":"$(list-flat)","title":"Sessions: List (filterable table)","command":"powerClaude.sessions.openList","category":"Power Claude"},{"icon":"$(list-tree)","title":"Sessions: Tree","command":"powerClaude.sessions.openTree","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.sessions.openLane","category":"Power Claude"},{"icon":"$(debug-start)","title":"Resume","command":"powerClaude.sessionResume"},{"icon":"$(edit)","title":"Resume with prompt…","command":"powerClaude.sessionResumeWithPrompt"},{"icon":"$(open-preview)","title":"Open Detail","command":"powerClaude.openSessionDetail"},{"icon":"$(graph)","title":"Show Graph","command":"powerClaude.openSessionGraph"},{"icon":"$(clippy)","title":"Copy Session Id","command":"powerClaude.copySessionId"},{"icon":"$(clippy)","title":"Copy Session Name","command":"powerClaude.copySessionName"},{"icon":"$(clippy)","title":"Copy Session Prompt Text","command":"powerClaude.copySessionFirstPrompt"},{"icon":"$(graph)","title":"Show Graph (Selected Sessions)","command":"powerClaude.openMultiSessionGraph"},{"icon":"$(diff-multiple)","title":"Pre-commit Review","command":"powerClaude.openPreCommitReview"},{"icon":"$(tag)","title":"Add Tag","command":"powerClaude.addSessionTag"},{"title":"Remove Tag","command":"powerClaude.removeSessionTag"},{"icon":"$(pin)","title":"Pin / Unpin Session","command":"powerClaude.togglePinSession"},{"icon":"$(tag)","title":"Set Session Status…","command":"powerClaude.setSessionStatus"},{"icon":"$(archive)","title":"Archive Session","command":"powerClaude.archiveSession"},{"title":"Unarchive Session","command":"powerClaude.unarchiveSession"},{"title":"Export Session (JSON or Markdown)","command":"powerClaude.exportSession"},{"title":"Open","command":"powerClaude.openTouchedFile"},{"title":"Diff vs Snapshot","command":"powerClaude.diffTouchedFile"},{"title":"Copy Path","command":"powerClaude.copyTouchedFilePath"},{"title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)","command":"powerClaude.installTimelineHook"},{"title":"Power Claude: Uninstall Timeline Hook","command":"powerClaude.uninstallTimelineHook"},{"icon":"$(cloud-download)","title":"Power Claude: Export Logs (Sanitized)","command":"powerClaude.exportLogs"},{"title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)","command":"powerClaude.installWatchdogHooks"},{"title":"Power Claude: Uninstall Background Watchdog Hooks","command":"powerClaude.uninstallWatchdogHooks"},{"title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)","command":"powerClaude.installLifecycleHooks"},{"title":"Power Claude: Uninstall Session Lifecycle Hooks","command":"powerClaude.uninstallLifecycleHooks"},{"title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)","command":"powerClaude.uninstallAll"},{"title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)","command":"powerClaude.toggleAutoMode"},{"title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)","command":"powerClaude.setPermissionMode"},{"title":"Power Claude: Refresh License Validation","command":"powerClaude.refreshLicense"},{"title":"Power Claude: Toggle Session Trail","command":"powerClaude.toggleSessionBlame"},{"title":"Power Claude: Show Session Trail for this file","command":"powerClaude.sessionTrail.showHistory"},{"title":"Power Claude: Export Session Trail (Markdown / JSON)","command":"powerClaude.sessionTrail.exportAttribution"},{"title":"Power Claude: Filter Session Trail by model…","command":"powerClaude.sessionTrail.toggleModelFilter"},{"title":"Power Claude: Show Sessions That Touched This File","command":"powerClaude.openFileSessions"},{"title":"Power Claude: Show Tab State Legend","command":"powerClaude.tabIconLegend"},{"title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)","command":"powerClaude.exportInsightSnapshot"},{"title":"Start Proxy","command":"powerClaude.proxy.start","category":"Power Claude"},{"title":"Stop Proxy","command":"powerClaude.proxy.stop","category":"Power Claude"},{"title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","command":"powerClaude.toggleBalancedMode","category":"Power Claude","enablement":"true","shortTitle":"Toggle Power Mode"},{"title":"Open Power Mode Settings","command":"powerClaude.openBalancedModeSettings","category":"Power Claude","shortTitle":"Power Mode Settings"},{"title":"Set Routing Mode (smart | fallback)","command":"powerClaude.routing.setMode","category":"Power Claude","shortTitle":"Routing Mode"},{"title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","command":"powerClaude.balancedMode.reconcile","category":"Power Claude","shortTitle":"Reconcile Power Mode"},{"title":"Open Auto-Rewake Settings","command":"powerClaude.openAutoRewakeSettings","category":"Power Claude","shortTitle":"Auto-Rewake Settings"},{"title":"Emergency Recovery","command":"powerClaude.emergency","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"Copy Emergency Command","command":"powerClaude.copyEmergencyCommand","category":"Power Claude"},{"title":"🛑 Emergency Off — Stop Everything (Safe)","command":"powerClaude.emergencyOff","category":"Power Claude"},{"title":"✅ Emergency On — Clear Stop-Everything Sentinel","command":"powerClaude.emergencyOn","category":"Power Claude"},{"title":"Disable Rotation (CLI)","command":"powerClaude.disableRotationCli","category":"Power Claude"},{"title":"Stop Proxy (alias)","command":"powerClaude.stopProxy","category":"Power Claude"},{"title":"Restore Backup Credentials","command":"powerClaude.restoreBackupCredentials","category":"Power Claude"},{"title":"Activate License","command":"powerClaude.activateLicense","category":"Power Claude"},{"title":"Deactivate License","command":"powerClaude.deactivateLicense","category":"Power Claude"},{"title":"Open Pricing","command":"powerClaude.openPricing","category":"Power Claude"},{"title":"Find My License Key (open account page)","command":"powerClaude.findLicenseKey","category":"Power Claude"},{"title":"Resume Selected Sessions","command":"powerClaude.resumeSelectedSessions","category":"Power Claude"},{"icon":"$(git-commit)","title":"Sessions: Lane view","command":"powerClaude.openSessionsLaneView","category":"Power Claude"},{"title":"Open Events Log","command":"powerClaude.openEventsLog","category":"Power Claude"},{"title":"Re-apply Preserve-Focus Patch to Claude Code Extension","command":"powerClaude.preserveFocusFix.apply","category":"Power Claude"},{"title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","command":"powerClaude.applyChipDefaultOff","category":"Power Claude"},{"title":"Active-File Chip Default-Off — Status","command":"powerClaude.chipDefaultOffStatus","category":"Power Claude"},{"title":"Revert Active-File Chip Default-Off","command":"powerClaude.revertChipDefaultOff","category":"Power Claude"},{"title":"Power Claude: Open Setting","command":"powerClaude.openSetting","category":"Power Claude"},{"title":"⚡ Power Claude: Show Inbound Messages","command":"powerClaude.showInboundMessages","category":"Power Claude"},{"title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","command":"powerClaude.showRemoteMessaging","category":"Power Claude"},{"title":"⚡ Power Claude: Worktree Manager","command":"powerClaude.worktreeManager.open","category":"Power Claude"},{"title":"⚡ Power Claude: Refresh Worktree Manager","command":"powerClaude.worktreeManager.refresh","category":"Power Claude"},{"title":"⚡ Power Claude: Open Worktree Folder","command":"powerClaude.worktreeManager.openFolder","category":"Power Claude"},{"title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","command":"powerClaude.worktreeManager.reclaimDryRun","category":"Power Claude"},{"title":"⚡ Power Claude: Reply to Session","command":"powerClaude.sessionReply","category":"Power Claude"},{"title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","command":"powerClaude.autoRotationEngine.enable","category":"Power Claude"},{"title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","command":"powerClaude.autoRotationEngine.chooseManual","category":"Power Claude"},{"title":"Power Claude: Show Auto-Rotation Engine Status","command":"powerClaude.autoRotationEngine.showStatus","category":"Power Claude"},{"title":"Power Claude: Download Appeal Kit","command":"powerClaude.autoRotationEngine.appealKit","category":"Power Claude"},{"title":"Power Claude: Claude Health Check (Proof Mode)","command":"powerClaude.runProof","category":"Power Claude"},{"title":"Power Claude: Recover Unfinished Session (Proof)","command":"powerClaude.runProofRecover","category":"Power Claude"},{"title":"Power Claude: Protect Future Sessions (Proof)","command":"powerClaude.runProofProtect","category":"Power Claude"},{"title":"Refresh Harness Health","command":"powerClaude.harnessHealth.refresh","category":"Power Claude"},{"icon":"$(refresh)","title":"Power Claude: Refresh Harness Flow Sidebar","command":"powerClaude.flow.sidebar.refresh","category":"Power Claude"},{"icon":"$(type-hierarchy)","title":"Power Claude: Show Harness Flow","command":"powerClaude.harnessFlow.focus","category":"Power Claude"},{"title":"Power Claude: Focus Right Panel (Profiles & Home)","command":"powerClaude.focusSidePanel","category":"Power Claude"},{"title":"Power Claude: Add Host Account (lab)","command":"powerClaude.addHostAccount","category":"Power Claude"},{"title":"Power Claude: Remove Host Account (lab)","command":"powerClaude.removeHostAccount","category":"Power Claude"},{"title":"Power Claude: Activate Host Account (lab)","command":"powerClaude.activateHostAccount","category":"Power Claude"},{"title":"Power Claude: Rotate Host Account (lab)","command":"powerClaude.rotateHostAccount","category":"Power Claude"},{"title":"Power Claude: Host Limit → Rotate (lab)","command":"powerClaude.hostAccountOnLimit","category":"Power Claude"},{"title":"Power Claude: Seed 6 Lab Grok Accounts","command":"powerClaude.seedLabGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Select Host Provider Tab","command":"powerClaude.selectHostProvider","category":"Power Claude"},{"title":"Power Claude: Import Live Grok Account(s) from ~/.grok","command":"powerClaude.importLiveGrokAccounts","category":"Power Claude"},{"title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","command":"powerClaude.importLiveHostAccounts","category":"Power Claude"},{"title":"Power Claude: Launch Host Session (isolated seat)","command":"powerClaude.launchHostSession","category":"Power Claude"},{"title":"Power Claude: Prune Lab Host Accounts","command":"powerClaude.pruneLabHostAccounts","category":"Power Claude"}],"keybindings":[{"key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty","command":"powerClaude.searchSessions"},{"key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty","command":"powerClaude.searchOpenTabsQuickPick"}],"viewsWelcome":[{"view":"powerClaude.dashboardV2","contents":"**Home** (View 2.0) — Model tabs filter the whole dashboard. Accounts follow Model. Events live under **Debug**. Classic compare layout is opt-in via `Power Claude › UI: Show Classic Home`.\n[Get Started](command:powerClaude.showWelcome)\n[Sessions List](command:powerClaude.sessions.openList)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — optional View 1.x compare. Primary home is **Home** (Command Center 3.0).\n[Open Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Harness Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power Claude primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.commandCenterV3","contents":"**Home** — Command Center 3.0 blind contract. Model context isolates capacity/accounts/actions.\n[Open View 2.0 compare](command:powerClaude.dashboardV2.focus)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","steps":[{"id":"install","media":{"markdown":"media/walkthrough/install.md"},"title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm)."},{"id":"proofscan","media":{"markdown":"media/walkthrough/proofscan.md"},"title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","media":{"markdown":"media/walkthrough/proofrecover.md"},"title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","media":{"markdown":"media/walkthrough/proofkeep.md"},"title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready."},{"id":"activate","media":{"markdown":"media/walkthrough/activate.md"},"title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode."},{"id":"add-account","media":{"markdown":"media/walkthrough/add-account.md"},"title":"Add your Claude account(s)","description":"Link one or more Claude logins you own."},{"id":"auto-rotation-engine","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","media":{"markdown":"media/walkthrough/rotate.md"},"title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in."},{"id":"tailor","media":{"markdown":"media/walkthrough/tailor.md"},"title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time."},{"id":"safety","media":{"markdown":"media/walkthrough/safety.md"},"title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data."},{"id":"objective-mode","media":{"markdown":"media/walkthrough/objective-mode.md"},"title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails."},{"id":"optimize","media":{"markdown":"media/walkthrough/optimize.md"},"title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro)."},{"id":"learn-more","media":{"markdown":"media/walkthrough/learn-more.md"},"title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs."}],"title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding)."}],"configuration":[{"order":1,"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","properties":{"powerClaude.proxy.parallelMode":{"enum":["round-robin","least-utilized","smart"],"type":"string","order":2,"default":"least-utilized","description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"order":3,"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelAccounts":{"type":"boolean","order":1,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","order":0,"default":3,"maximum":4,"minimum":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.log":{"type":"boolean","order":4,"default":true,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","order":5,"default":true,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","order":6,"default":true,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."},"powerClaude.contextOptimize.enabled":{"type":"boolean","order":1,"default":true,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"enum":["conservative","standard","aggressive"],"type":"string","order":2,"default":"standard","description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines.","enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."]},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","order":3,"default":true,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","order":1,"default":true,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","order":7,"default":true,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","order":4,"default":3000,"maximum":20000,"minimum":500,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","order":5,"default":4500,"maximum":30000,"minimum":500,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","order":3,"default":1,"maximum":20,"minimum":1,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","order":6,"default":90,"maximum":100,"minimum":50,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","order":2,"default":80,"maximum":100,"minimum":10,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.branding.enabled":{"type":"boolean","order":0,"default":true,"description":"Master switch for Power Claude brand chrome that recolors or decorates the native LLM client look (purple scrollbars, state-colored session tab bolts, floating chat scroll buttons, branded animated loader, auto-resume bolt badge). When OFF, every branding child is force-disabled and re-applied/reverted live (tab hooks + on-disk patches; open Claude webviews may still need a window reload to drop already-injected IIFEs) and native client chrome is restored — even if individual child toggles remain ON. When ON, each child still has its own toggle. Default ON. Palette: brand violet #7c3aed + session green/amber/red/blue from Session Awareness SSoT.","markdownDescription":"**Master Branding** — one switch for every Power Claude decoration that changes the *native* LLM client look.\n\n- **Children:** purple scrollbars, session **tab state icons**, chat scroll ↑↓, animated loader, auto-resume badge.\n- **Master OFF** → all children force-off and re-applied/reverted live.\n- **Master ON** → `effective = master AND child`.\n- **Default ON.**"},"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Requires powerClaude.branding.enabled (master). Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off, turn branding master off, or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"maximum":200,"minimum":1,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"maximum":50,"minimum":1,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.animatedLoader.mode":{"enum":["append","override","off"],"type":"string","default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"maximum":300000,"minimum":0,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"maximum":60000,"minimum":0,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"maximum":3600000,"minimum":0,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"maximum":20000,"minimum":250,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"maximum":30000,"minimum":1000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."},"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."}}},{"order":2,"title":"Power Claude","properties":{"powerClaude.logLevel":{"enum":["trace","debug","verbose","info","warn","error"],"type":"string","default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime.","enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."]},"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.autoNudge.nudges":{"type":"object","default":{"ask-to-verify":false,"pseudo-checkpoint":true,"restate-then-stop":false,"offer-multi-choice":true,"multi-session-defer":false,"tell-user-to-do-work":true,"promised-continuation":true,"sample-instead-of-all":false,"complete-remaining-tasks":true,"ask-permission-to-continue":true},"properties":{"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"}},"description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones)."},"powerClaude.ui.showView2Home":{"type":"boolean","default":true,"description":"When ON, contribute Home · View 2.0 for compare. Primary Home is Command Center 3.0.","markdownDescription":"**Show Home · View 2.0** (transitional compare). Primary Home is Command Center 3.0."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://api.neural-llm.com/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"enum":["debug","info","warn","error"],"type":"string","default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":true,"description":"When ON, show Home · Classic next to primary Home for side-by-side compare.","markdownDescription":"**Show Classic Home** — contributes **Home · Classic** next to primary **Home** (Command Center 3.0) and **Home · View 2.0**. ON during multi-view rebuild."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"maximum":1,"minimum":0,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"maximum":10,"minimum":1,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.render":{"enum":["text","strips"],"type":"string","default":"strips","enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.autoNudge.aggressiveness":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'.","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."]},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"maximum":300,"minimum":10,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.autoNudge.fallback.effort":{"enum":["fast","balanced","thorough"],"type":"string","default":"fast","description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"maximum":30,"minimum":2,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"maximum":20,"minimum":1,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"maximum":90,"minimum":1,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."}}},{"order":3,"title":"Power Claude: 🔄 Auto-Rewake","properties":{"powerClaude.autoRewake.userExtras.default":{"type":"string","order":5,"default":"","description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","order":3,"default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","order":2,"default":60,"maximum":600,"minimum":30,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","order":1,"default":30,"maximum":500,"minimum":5,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.deferredRewakeMechanism":{"enum":["systemd-run"],"type":"string","order":4,"default":"systemd-run","description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","order":10,"default":"","description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","order":11,"default":"","description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","order":6,"default":"","description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","order":8,"default":"","description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","order":7,"default":"","description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","order":12,"default":"","description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","order":9,"default":"","description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."}}},{"order":98,"title":"Power Claude: Self-Heal","properties":{"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","order":2,"default":60,"maximum":300,"minimum":10,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."},"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","order":1,"default":false,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."}}},{"order":7,"title":"Power Claude: ⚡ Auto-Tuning & Calibration","properties":{"powerClaude.jitSetup.enabled":{"type":"boolean","order":4,"default":true,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."},"powerClaude.calibration.enabled":{"type":"boolean","order":1,"default":true,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.posture":{"enum":["gentle","medium","precise"],"type":"string","order":3,"default":"medium","description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium.","enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."]},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","order":2,"default":true,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."}}},{"order":98,"title":"Power Claude: Developer","properties":{"powerClaude.autoActivateOnInstall":{"type":"boolean","order":2,"default":true,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","order":50,"default":false,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."},"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","order":1,"default":false,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":98,"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"order":97,"title":"Power Claude: Detached Sessions (experimental — Pro)","properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","order":1,"default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","order":4,"default":1,"minimum":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","order":3,"default":30,"maximum":240,"minimum":5,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","order":2,"default":60,"maximum":360,"minimum":5,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."}}},{"order":99,"title":"Power Claude: Update Notifier","properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","order":1,"default":true,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"order":60,"title":"Power Claude: 🩹 Session Actions","properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","order":1,"default":true,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","order":10,"default":true,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":11,"default":"","description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","order":60,"default":true,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","order":30,"default":true,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.resume.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":61,"default":"","description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.revive.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":31,"default":"","description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","order":20,"default":true,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":21,"default":"","description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","order":40,"default":true,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","order":70,"default":true,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.rerunTool.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":41,"default":"","description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","order":50,"default":true,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.repairTurn.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":71,"default":"","description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."},"powerClaude.sessionActions.finishTasks.strategy":{"enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"type":"string","order":51,"default":"","description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","order":1,"default":false,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","order":2,"default":8000,"maximum":60000,"minimum":1000,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","order":1,"default":true,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","order":2,"default":false,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."}}}],"viewsContainers":{"activitybar":[{"id":"powerClaudeRail","icon":"media/icon-activity.svg","title":"Power Claude"}],"secondarySidebar":[{"id":"powerClaude","icon":"media/icon-activity.svg","title":"Power Claude"}]}},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","directories":{},"displayName":"Power Claude — Save $115+/mo vs Claude Max","_nodeVersion":"22.23.1","capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"dependencies":{},"extensionKind":["workspace"],"galleryBanner":{"color":"#1e1e2e","theme":"dark"},"_hasShrinkwrap":false,"readmeFilename":"README.md","activationEvents":["onStartupFinished","onUri","onView:powerClaude.dashboardV2","onView:powerClaude.dashboard","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.filesTouched","onView:powerClaude.flow","onView:powerClaude.commandCenterV3"],"_npmOperationalInternal":{"tmp":"tmp/power-claude_3.0.114_1785885899287_0.08326008011442476","host":"s3://npm-registry-packages-npm-production"}},"3.0.138":{"name":"power-claude","displayName":"Power Claude — Save $115+/mo vs Claude Max","description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","version":"3.0.138","bin":{"power-claude":"bin/power-claude-cli.js","pc":"bin/power-claude-cli.js"},"publisher":"neural-llm","author":{"name":"Neural-LLM","email":"support@neural-llm.com","url":"https://neural-llm.com"},"license":"SEE LICENSE IN LICENSE","icon":"media/icon.png","repository":{"type":"git","url":"git+https://github.com/neural-llm-io/power-claude.git"},"homepage":"https://neural-llm.com/power-claude","bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm","multi-host","model-tabs","kimi","grok","codex","gemini","multi-model"],"engines":{"vscode":"^1.80.0","node":">=20.0.0"},"categories":["AI","Machine Learning","Visualization","Other"],"qna":"marketplace","pricing":"Free","galleryBanner":{"color":"#1e1e2e","theme":"dark"},"badges":[{"url":"https://img.shields.io/visual-studio-marketplace/v/neural-llm.power-claude.svg?style=flat-square&label=VS+Code+Marketplace&logo=visualstudiocode&logoColor=white&color=f26522","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"VS Code Marketplace"},{"url":"https://img.shields.io/open-vsx/v/neural-llm/power-claude.svg?style=flat-square&label=Open+VSX&logo=vscodium&logoColor=white&color=a60ee5","href":"https://open-vsx.org/extension/neural-llm/power-claude","description":"Open VSX (Cursor · VSCodium · Gitpod)"},{"url":"https://img.shields.io/visual-studio-marketplace/i/neural-llm.power-claude.svg?style=flat-square&label=installs&color=4ec9b0","href":"https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude","description":"Install count"}],"capabilities":{"virtualWorkspaces":{"supported":false,"description":"Power Claude needs local filesystem access to ~/.claude and ~/.power-claude and runs a local rotation proxy, so it cannot operate in a virtual (remote-only) workspace."},"untrustedWorkspaces":{"supported":true,"description":"Power Claude operates only on your ~/.claude and ~/.power-claude state and never executes workspace code, so it runs fully in Restricted Mode."}},"extensionKind":["workspace"],"main":"./out/extension.js","activationEvents":["onStartupFinished","onUri","onView:powerClaude.tree","onView:powerClaude.sessionExplorer","onView:powerClaude.taskBoard","onView:powerClaude.filesTouched","onView:powerClaude.dashboard","onView:powerClaude.commandCenterV3","onView:powerClaude.dashboardV2","onView:powerClaude.flow","onView:powerClaude.jargonCoach"],"contributes":{"viewsContainers":{"secondarySidebar":[{"id":"power","title":"Power","icon":"media/icon-activity.svg"}],"activitybar":[{"id":"powerRail","title":"Power","icon":"media/icon-activity.svg"}]},"views":{"power":[{"id":"powerClaude.commandCenterV3","name":"Home","type":"webview","contextualTitle":"Power · Home (products switch inside; Command Center 3.0)","icon":"media/icon-activity.svg"},{"id":"powerClaude.dashboardV2","name":"Home · View 2.0","type":"webview","contextualTitle":"Power · Home · View 2.0 (opt-in compare)","icon":"media/icon-activity.svg","when":"config.powerClaude.ui.showView2Home"},{"id":"powerClaude.dashboard","name":"Home · Classic","type":"webview","contextualTitle":"Power · Home · Classic (opt-in compare)","icon":"media/icon-activity.svg","when":"config.powerClaude.ui.showClassicHome"},{"id":"powerClaude.sessionExplorer","name":"Sessions","contextualTitle":"Sessions — Tree home · List table · Search · Lane","icon":"media/icon-activity.svg"},{"id":"powerClaude.taskBoard","name":"Tasks","contextualTitle":"Tasks — SESSION · GLOBAL harness task board (below Sessions)","icon":"media/icon-activity.svg"},{"id":"powerClaude.tree","name":"Profiles","contextualTitle":"Accounts & Profiles","icon":"media/icon-activity.svg"},{"id":"powerClaude.flow","name":"Harness · Flow","contextualTitle":"Power · Harness · Flow (pipeline · health · clients)","icon":"media/icon-activity.svg"},{"id":"powerClaude.jargonCoach","name":"Jargon Coach","type":"webview","contextualTitle":"Jargon Coach — Technical Fluency"},{"id":"powerClaude.filesTouched","name":"Sessions · Files","contextualTitle":"Sessions inspector — files in the selected session","icon":"media/icon-activity.svg","when":"powerClaude.sessionExplorerHasSelection"},{"id":"powerClaude.sessionLauncher","name":"Sessions · Worktrees","contextualTitle":"Sessions inspector — worktrees for this workspace","icon":"media/icon-activity.svg","when":"powerClaude.hasSessionWorktrees"}],"powerRail":[{"id":"powerClaude.railHome","name":"Open Power →","contextualTitle":"Open Power panel (right sidebar)","icon":"media/icon-activity.svg"}]},"viewsWelcome":[{"view":"powerClaude.commandCenterV3","contents":"**Power · Home** — products switch inside this view (not separate sidebar items).\nCompare surfaces stay opt-in: **Home · View 2.0** / **Home · Classic** settings.\n[Get Started](command:powerClaude.showWelcome)\n[Open View 2.0](command:powerClaude.dashboardV2.focus)\n[Open Classic](command:powerClaude.dashboard.focus)"},{"view":"powerClaude.dashboardV2","contents":"**Home · View 2.0** — transitional compare. Primary is **Home** (Command Center 3.0).\n[Open primary Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.dashboard","contents":"**Home · Classic** — View 1.x compare. Primary is **Home** (Command Center 3.0).\n[Open primary Home](command:powerClaude.commandCenterV3.focus)"},{"view":"powerClaude.sessionExplorer","contents":"**Sessions** — one home for agent work. You are on **Tree** mode (pin / day / archive).\nOther modes (title bar): **List** (filterable table · brain/host) · **Search** · **Lane**.\nSelect a session to open **Files Touched** (inspector, not a permanent empty view).\n[List mode](command:powerClaude.sessions.openList)\n[Search](command:powerClaude.searchSessions)\n[Lane](command:powerClaude.sessions.openLane)\n[Tasks board](command:powerClaude.tasks.focus)"},{"view":"powerClaude.taskBoard","contents":"**Tasks** — harness session/global task ledger (same board agents paint end-of-turn).\nSESSION = this session's rows · GLOBAL = peer-owned open work · Handoffs when present.\n[Refresh](command:powerClaude.tasks.refresh)\n[Sessions](command:powerClaude.sessionExplorer.focus)\n[Home](command:powerClaude.showWebview)"},{"view":"powerClaude.tree","contents":"**Profiles** — your Claude accounts / pool identity.\nPower Claude rotates across accounts so you keep coding through rate limits.\n[Get Started](command:powerClaude.showWelcome)\n[Documentation](command:powerClaude.openDocs)\nThen add an account with `pc add`."},{"view":"powerClaude.flow","contents":"**Power · Harness · Flow** — pipeline blueprint, fail-closed health, and which agent clients are wired. This is **not** your chat Sessions list.\n[Open Harness Flow Explorer](command:powerClaude.workflowFlow.open)\n[Refresh health](command:powerClaude.harnessHealth.refresh)\n[Back to Home](command:powerClaude.showWebview)"},{"view":"powerClaude.railHome","contents":"Power primary chrome is on the **right** side bar.\n[Open right panel](command:powerClaude.focusSidePanel)\n[Home](command:powerClaude.showWebview)"}],"walkthroughs":[{"id":"powerClaude.gettingStarted","title":"Get Started with Power Claude","description":"Save on Claude capacity and keep Claude Code working when you walk away — Health Check first win, then license, multi-seat, optional Auto-Rotation Engine. Step bodies from media/walkthrough/*.md (npm run emit:onboarding).","steps":[{"id":"install","title":"Install Power Claude","description":"Add the extension (VS Code / Cursor) or the CLI (npm).","media":{"markdown":"media/walkthrough/install.md"}},{"id":"proofscan","title":"Scan your recent Claude sessions","description":"Claude Health Check — personal proof from YOUR history in under 60 seconds.","media":{"markdown":"media/walkthrough/proofscan.md"},"completionEvents":["onCommand:powerClaude.runProof"]},{"id":"proofrecover","title":"Recover or protect one session","description":"One safe, visible action — resume unfinished work or arm protection.","media":{"markdown":"media/walkthrough/proofrecover.md"},"completionEvents":["onCommand:powerClaude.runProofRecover","onCommand:powerClaude.runProofProtect"]},{"id":"proofkeep","title":"Keep Power Claude active","description":"Leave protection on — unlock savings and multi-seat capacity when ready.","media":{"markdown":"media/walkthrough/proofkeep.md"}},{"id":"activate","title":"Activate your license","description":"Paste your key to unlock multi-account features and Power mode.","media":{"markdown":"media/walkthrough/activate.md"}},{"id":"add-account","title":"Add your Claude account(s)","description":"Link one or more Claude logins you own.","media":{"markdown":"media/walkthrough/add-account.md"}},{"id":"auto-rotation-engine","title":"Auto-Rotation Engine (recommended)","description":"Preferred for multi-account continuity. OFF until you acknowledge the grey-area warning — or keep Manual.","media":{"markdown":"media/walkthrough/auto-rotation-engine.md"},"completionEvents":["onCommand:powerClaude.autoRotationEngine.enable","onCommand:powerClaude.autoRotationEngine.chooseManual"]},{"id":"rotate","title":"Manual rotate & engine process","description":"Manual switch anytime; start engine process only if you opted in.","media":{"markdown":"media/walkthrough/rotate.md"}},{"id":"tailor","title":"Tailor Power Claude to you","description":"Pick how hands-on you want it — then let it fine-tune itself over time.","media":{"markdown":"media/walkthrough/tailor.md"}},{"id":"jargon-coach","title":"Choose your Jargon Coach mode","description":"Opt in to accurate technical language with explanations that adapt as you learn.","media":{"markdown":"media/walkthrough/jargon-coach.md"},"completionEvents":["onCommand:powerClaude.jargonCoach.configure"]},{"id":"safety","title":"Everyday safety controls","description":"Pause, resume, recover — without losing any data.","media":{"markdown":"media/walkthrough/safety.md"}},{"id":"objective-mode","title":"Objective Mode (on by default)","description":"Multi-step requests run to completion — hands-free, with safety rails.","media":{"markdown":"media/walkthrough/objective-mode.md"}},{"id":"optimize","title":"Optimize your setup","description":"One-click toggles — auto-resume and experimental Detached Sessions (Pro).","media":{"markdown":"media/walkthrough/optimize.md"}},{"id":"learn-more","title":"Go deeper","description":"Power Mode, auto-resume, token saver, and the full docs.","media":{"markdown":"media/walkthrough/learn-more.md"}}]}],"commands":[{"command":"powerClaude.jargonCoach.open","title":"Power Claude: Open Jargon Coach","category":"Power Claude","icon":"$(book)"},{"command":"powerClaude.jargonCoach.openGlossary","title":"Power Claude: Open Jargon Coach Glossary","category":"Power Claude"},{"command":"powerClaude.jargonCoach.openReview","title":"Power Claude: Review Technical Terms","category":"Power Claude"},{"command":"powerClaude.jargonCoach.configure","title":"Power Claude: Configure Jargon Coach","category":"Power Claude","icon":"$(settings-gear)"},{"command":"powerClaude.jargonCoach.toggle","title":"Power Claude: Toggle Jargon Coach Explanations","category":"Power Claude"},{"command":"powerClaude.refresh","title":"Power Claude: Refresh","icon":"$(refresh)"},{"command":"powerClaude.leaveReview","title":"Power Claude: Leave a Review","icon":"$(star)"},{"command":"powerClaude.sessionActions.menu","title":"Power Claude: Session Actions","icon":"$(pulse)"},{"command":"powerClaude.showWelcome","title":"Power Claude: Run Setup Guide (Onboarding)","icon":"$(rocket)"},{"command":"powerClaude.openDocs","title":"Power Claude: Open Documentation","icon":"$(book)"},{"command":"powerClaude.tokenSaver.open","title":"Power Claude: Token Saver (optimizer slider)","icon":"$(settings-gear)"},{"command":"powerClaude.openSettings","title":"Power Claude: Open Settings","category":"Power Claude","icon":"$(gear)"},{"command":"powerClaude.calibrate.openModal","title":"Power Claude: Calibrate a setting (Interactive Mode)","icon":"$(sparkle)"},{"command":"powerClaude.workflowFlow.open","title":"Power Claude: Open Harness Flow Explorer","icon":"$(type-hierarchy)","category":"Power Claude"},{"command":"powerClaude.flowExplorer.open","title":"Power Claude: Open Harness Flow Explorer","icon":"$(type-hierarchy)","category":"Power Claude"},{"command":"powerClaude.flowExplorer.openForSession","title":"Power Claude: Open Session Path in Harness Flow","icon":"$(type-hierarchy)","category":"Power Claude"},{"command":"powerClaude.resumeStalledSessions","title":"Power Claude: Finish Stalled Sessions","icon":"$(run-all)"},{"command":"powerClaude.crossModelSessions","title":"Power Claude: Cross-Model Hanging Sessions","icon":"$(git-compare)"},{"command":"powerClaude.statusLegend","title":"Power Claude: Show Status Color Legend","icon":"$(symbol-color)"},{"command":"powerClaude.autoResumeAudit","title":"Power Claude: Auto-Resume Audit","icon":"$(history)"},{"command":"powerClaude.updateNotifier.checkNow","title":"Power Claude: Check for Updates"},{"command":"powerClaude.updateNotifier.resetSuppression","title":"Power Claude: Reset Update Notifier (re-enable prompts)"},{"command":"powerClaude.showWebview","title":"Power Claude: Show Home"},{"command":"powerClaude.openDataFile","title":"Power Claude: Open data.json"},{"command":"powerClaude.rescan","title":"Power Claude: Rescan claude-auth (rebuild data.json)","icon":"$(play)"},{"command":"powerClaude.linkAccount","title":"Power Claude: Link Account (open OAuth browser)"},{"command":"powerClaude.refreshAccount","title":"Power Claude: Refresh Account (force OAuth refresh)"},{"command":"powerClaude.reloginAccount","title":"Power Claude: Re-login Account (start OAuth)"},{"command":"powerClaude.repairAccount","title":"Power Claude: Repair Account Identity (verify token → real account)"},{"command":"powerClaude.verifyIdentities","title":"Power Claude: Verify All Account Identities & Refresh Quota"},{"command":"powerClaude.pinAccount","title":"Power Claude: Pin Account"},{"command":"powerClaude.unpinAccount","title":"Power Claude: Unpin Account"},{"command":"powerClaude.activateAccount","title":"Power Claude: Activate Account"},{"command":"powerClaude.removeAccount","title":"Power Claude: Remove Account"},{"command":"powerClaude.exportAccounts","title":"Power Claude: Export Profiles (to a file)","icon":"$(export)"},{"command":"powerClaude.importAccounts","title":"Power Claude: Import Profiles (from a file)","icon":"$(import)"},{"command":"powerClaude.stopSessionAutoResume","title":"Power Claude: Stop Session Auto-Resume","category":"Power Claude"},{"command":"powerClaude.resumeSessionAutoResume","title":"Power Claude: Resume Session Auto-Resume","category":"Power Claude"},{"command":"powerClaude.reloginAllExpired","title":"Power Claude: Re-login ALL Expired Profiles"},{"command":"powerClaude.forceHeal","title":"Power Claude: Force Heal All Profiles"},{"command":"powerClaude.toggleRotation","title":"Power Claude: Toggle Rotation Master Switch"},{"command":"powerClaude.toggleThrottleOnly","title":"Power Claude: Toggle Throttle-Only Mode"},{"command":"powerClaude.openActivity","title":"Power Claude: Open Activity Feed"},{"command":"powerClaude.copyCommand","title":"Power Claude: Copy CLI Command"},{"command":"powerClaude.openClaudeAi","title":"Power Claude: Open claude.ai for this account"},{"command":"powerClaude.health","title":"Power Claude: Run claude-health"},{"command":"powerClaude.profiles","title":"Power Claude: List Profiles"},{"command":"powerClaude.tailHandler","title":"Power Claude: Tail Rate-Limit Logs"},{"command":"powerClaude.selfDiagnostics","title":"Power Claude: Self-Diagnostics (auto-resume report)","category":"Power Claude","icon":"$(beaker)"},{"command":"powerClaude.runCommand","title":"Power Claude: Run CLI Command"},{"command":"powerClaude.openSnapshot","title":"Power Claude: Open History Snapshot"},{"command":"powerClaude.openGitCommit","title":"Power Claude: Open Git Commit"},{"command":"powerClaude.openAccountLogs","title":"Power Claude: Show Per-Account Handler Events"},{"command":"powerClaude.snapshotSessions","title":"Power Claude: Snapshot Active Sessions"},{"command":"powerClaude.resumeSavedSessions","title":"Power Claude: Resume Saved Sessions"},{"command":"powerClaude.openSessionTab","title":"Power Claude: Open Session Tab (no prompt injection)"},{"command":"powerClaude.searchOpenTabsQuickPick","title":"Power Claude: Power Search Sessions","icon":"$(search-fuzzy)","category":"Power Claude"},{"command":"powerClaude.reinstallClaudeCodeExtension","title":"Power Claude: Reinstall Claude Code Extension (guide)","category":"Power Claude"},{"command":"powerClaude.warmAllSessionTabs","title":"Power Claude: Load All Session Tabs","icon":"$(run-all)"},{"command":"powerClaude.setSessionTitle","title":"Power Claude: Rename Session"},{"command":"powerClaude.openMessageTimeline","title":"Power Claude: Show Message Timeline (your messages, with times)","icon":"$(history)"},{"command":"powerClaude.restoreClaudeCodeToStock","title":"Power Claude: Restore Claude Code to Stock (remove all enhancements)"},{"command":"powerClaude.enableClaudeCodeMods","title":"Power Claude: Enable Claude Code Enhancements"},{"command":"powerClaude.resumeSessionTab","title":"Power Claude: Resume Session Tab (inject wake-up prompt)"},{"command":"powerClaude.resumeSessionInTerminal","title":"Power Claude: Resume Session in Terminal (CLI mode)"},{"command":"powerClaude.clearSavedSessions","title":"Power Claude: Clear Saved Sessions Snapshot"},{"command":"powerClaude.switchToSoonest","title":"Power Claude: Switch Active Account to Soonest-Recovering"},{"command":"powerClaude.toggleAutoSelectSoonest","title":"Power Claude: Toggle Auto-Select Soonest Account"},{"command":"powerClaude.toggleAutoResumeSessions","title":"Power Claude: Toggle Auto-Resume Sessions on Startup"},{"command":"powerClaude.toggleDetachedSessions","title":"Power Claude: Toggle Detached Sessions (experimental)"},{"command":"powerClaude.detached.run","title":"Power Claude: Run Session Detached (keeps running on refresh)"},{"command":"powerClaude.detached.stop","title":"Power Claude: Stop Detached Session"},{"command":"powerClaude.detached.list","title":"Power Claude: List Detached Sessions"},{"command":"powerClaude.runSetupWizard","title":"Power Claude: Run Setup & Optimize Wizard"},{"command":"powerClaude.toggleYourRequestBanner","title":"Power Claude: Toggle Your Request Banner"},{"command":"powerClaude.openUsageWebview","title":"Power Claude: Open LLM Usage Dashboard"},{"command":"powerClaude.openCli","title":"Power Claude: Open CLI Reference","category":"Power Claude"},{"command":"powerClaude.refreshLlmUsage","title":"Power Claude: Refresh Usage Data"},{"command":"powerClaude.openLlmUsagePrices","title":"Power Claude: Open prices.json"},{"command":"powerClaude.openLlmUsageData","title":"Power Claude: Open data.json (LLM usage)"},{"command":"powerClaude.openLlmUsageAnchors","title":"Power Claude: Open anchors.json (rate-limit cap-hits)"},{"command":"powerClaude.saveLlmUsagePrices","title":"Power Claude: Save Usage Prices"},{"command":"powerClaude.resetLlmUsagePrices","title":"Power Claude: Reset LLM Usage prices to Anthropic defaults"},{"command":"powerClaude.addLlmUsageOverride","title":"Power Claude: Add LLM Usage account override"},{"command":"powerClaude.removeLlmUsageOverride","title":"Power Claude: Remove Usage Account Override"},{"command":"powerClaude.changeLlmUsageAccountPlan","title":"Power Claude: Change plan for LLM Usage account"},{"command":"powerClaude.searchSessions","title":"Power Claude: Search Sessions","icon":"$(search)"},{"command":"powerClaude.sessions.openList","title":"Sessions: List (filterable table)","category":"Power Claude","icon":"$(list-flat)"},{"command":"powerClaude.sessions.openTree","title":"Sessions: Tree","category":"Power Claude","icon":"$(list-tree)"},{"command":"powerClaude.sessions.openLane","title":"Sessions: Lane view","category":"Power Claude","icon":"$(git-commit)"},{"command":"powerClaude.tasks.focus","title":"Power Claude: Focus Tasks","category":"Power Claude","icon":"$(checklist)"},{"command":"powerClaude.tasks.open","title":"Power Claude: Open Tasks","category":"Power Claude","icon":"$(checklist)"},{"command":"powerClaude.tasks.refresh","title":"Tasks: Refresh board","category":"Power Claude","icon":"$(refresh)"},{"command":"powerClaude.sessionResume","title":"Resume","icon":"$(debug-start)"},{"command":"powerClaude.sessionResumeWithPrompt","title":"Resume with prompt…","icon":"$(edit)"},{"command":"powerClaude.openSessionDetail","title":"Open Detail","icon":"$(open-preview)"},{"command":"powerClaude.openSessionGraph","title":"Show Graph","icon":"$(graph)"},{"command":"powerClaude.copySessionId","title":"Copy Session Id","icon":"$(clippy)"},{"command":"powerClaude.copySessionName","title":"Copy Session Name","icon":"$(clippy)"},{"command":"powerClaude.copySessionFirstPrompt","title":"Copy Session Prompt Text","icon":"$(clippy)"},{"command":"powerClaude.openMultiSessionGraph","title":"Show Graph (Selected Sessions)","icon":"$(graph)"},{"command":"powerClaude.openPreCommitReview","title":"Pre-commit Review","icon":"$(diff-multiple)"},{"command":"powerClaude.addSessionTag","title":"Add Tag","icon":"$(tag)"},{"command":"powerClaude.removeSessionTag","title":"Remove Tag"},{"command":"powerClaude.togglePinSession","title":"Pin / Unpin Session","icon":"$(pin)"},{"command":"powerClaude.setSessionStatus","title":"Set Session Status…","icon":"$(tag)"},{"command":"powerClaude.archiveSession","title":"Archive Session","icon":"$(archive)"},{"command":"powerClaude.unarchiveSession","title":"Unarchive Session"},{"command":"powerClaude.exportSession","title":"Export Session (JSON or Markdown)"},{"command":"powerClaude.openTouchedFile","title":"Open"},{"command":"powerClaude.diffTouchedFile","title":"Diff vs Snapshot"},{"command":"powerClaude.copyTouchedFilePath","title":"Copy Path"},{"command":"powerClaude.installTimelineHook","title":"Power Claude: Install Timeline Hook (track Claude edits in VS Code Timeline)"},{"command":"powerClaude.uninstallTimelineHook","title":"Power Claude: Uninstall Timeline Hook"},{"command":"powerClaude.exportLogs","title":"Power Claude: Export Logs (Sanitized)","icon":"$(cloud-download)"},{"command":"powerClaude.installWatchdogHooks","title":"Power Claude: Install Background Watchdog Hooks (heal sessions between runs)"},{"command":"powerClaude.uninstallWatchdogHooks","title":"Power Claude: Uninstall Background Watchdog Hooks"},{"command":"powerClaude.installLifecycleHooks","title":"Power Claude: Install Session Lifecycle Hooks (enable resilience watchdog)"},{"command":"powerClaude.uninstallLifecycleHooks","title":"Power Claude: Uninstall Session Lifecycle Hooks"},{"command":"powerClaude.uninstallAll","title":"Power Claude: Uninstall Everything (delete ~/.power-claude/ and all hooks)"},{"command":"powerClaude.toggleAutoMode","title":"Power Claude: Toggle Auto Mode (sets permissions.defaultMode in ~/.claude/settings.json)"},{"command":"powerClaude.setPermissionMode","title":"Power Claude: Set Claude Code Permission Mode (auto / acceptEdits / default / plan / bypassPermissions)"},{"command":"powerClaude.refreshLicense","title":"Power Claude: Refresh License Validation"},{"command":"powerClaude.toggleSessionBlame","title":"Power Claude: Toggle Session Trail"},{"command":"powerClaude.sessionTrail.showHistory","title":"Power Claude: Show Session Trail for this file"},{"command":"powerClaude.sessionTrail.exportAttribution","title":"Power Claude: Export Session Trail (Markdown / JSON)"},{"command":"powerClaude.sessionTrail.toggleModelFilter","title":"Power Claude: Filter Session Trail by model…"},{"command":"powerClaude.openFileSessions","title":"Power Claude: Show Sessions That Touched This File"},{"command":"powerClaude.tabIconLegend","title":"Power Claude: Show Tab State Legend"},{"command":"powerClaude.exportInsightSnapshot","title":"Power Claude: Export Insight Snapshot (Daily / Weekly Markdown)"},{"command":"powerClaude.proxy.start","title":"Start Proxy","category":"Power Claude"},{"command":"powerClaude.proxy.stop","title":"Stop Proxy","category":"Power Claude"},{"command":"powerClaude.toggleBalancedMode","title":"Toggle Power Mode — Parallel Dispatch + Smart 429 Routing","shortTitle":"Toggle Power Mode","category":"Power Claude","enablement":"true"},{"command":"powerClaude.openBalancedModeSettings","title":"Open Power Mode Settings","shortTitle":"Power Mode Settings","category":"Power Claude"},{"command":"powerClaude.routing.setMode","title":"Set Routing Mode (smart | fallback)","shortTitle":"Routing Mode","category":"Power Claude"},{"command":"powerClaude.balancedMode.reconcile","title":"Reconcile Power Mode (sync settings → proxy.json + restart proxy)","shortTitle":"Reconcile Power Mode","category":"Power Claude"},{"command":"powerClaude.openAutoRewakeSettings","title":"Open Auto-Rewake Settings","shortTitle":"Auto-Rewake Settings","category":"Power Claude"},{"command":"powerClaude.emergency","title":"Emergency Recovery","category":"Power Claude"},{"command":"powerClaude.copyEmergencyCommand","title":"Copy Emergency Command","category":"Power Claude"},{"command":"powerClaude.copyEmergencyCommand","title":"Copy Emergency Command","category":"Power Claude"},{"command":"powerClaude.emergencyOff","title":"🛑 Emergency Off — Stop Everything (Safe)","category":"Power Claude"},{"command":"powerClaude.emergencyOn","title":"✅ Emergency On — Clear Stop-Everything Sentinel","category":"Power Claude"},{"command":"powerClaude.disableRotationCli","title":"Disable Rotation (CLI)","category":"Power Claude"},{"command":"powerClaude.stopProxy","title":"Stop Proxy (alias)","category":"Power Claude"},{"command":"powerClaude.restoreBackupCredentials","title":"Restore Backup Credentials","category":"Power Claude"},{"command":"powerClaude.activateLicense","title":"Activate License","category":"Power Claude"},{"command":"powerClaude.deactivateLicense","title":"Deactivate License","category":"Power Claude"},{"command":"powerClaude.openPricing","title":"Open Pricing","category":"Power Claude"},{"command":"powerClaude.findLicenseKey","title":"Find My License Key (open account page)","category":"Power Claude"},{"command":"powerClaude.resumeSelectedSessions","title":"Resume Selected Sessions","category":"Power Claude"},{"command":"powerClaude.openSessionsLaneView","title":"Sessions: Lane view","category":"Power Claude","icon":"$(git-commit)"},{"command":"powerClaude.openEvents","title":"Open Events (Home tab)","category":"Power Claude"},{"command":"powerClaude.openEventsLog","title":"Open Events Log (raw file)","category":"Power Claude"},{"command":"powerClaude.preserveFocusFix.apply","title":"Re-apply Preserve-Focus Patch to Claude Code Extension","category":"Power Claude"},{"command":"powerClaude.applyChipDefaultOff","title":"💸 Apply Active-File Chip Default-Off (Saves Tokens)","category":"Power Claude"},{"command":"powerClaude.chipDefaultOffStatus","title":"Active-File Chip Default-Off — Status","category":"Power Claude"},{"command":"powerClaude.revertChipDefaultOff","title":"Revert Active-File Chip Default-Off","category":"Power Claude"},{"command":"powerClaude.openSetting","title":"Power Claude: Open Setting","category":"Power Claude"},{"command":"powerClaude.showInboundMessages","title":"⚡ Power Claude: Show Inbound Messages","category":"Power Claude"},{"command":"powerClaude.showRemoteMessaging","title":"⚡ Power Claude: Remote Link (Cross-Machine Messaging)","category":"Power Claude"},{"command":"powerClaude.worktreeManager.open","title":"⚡ Power Claude: Worktree Manager","category":"Power Claude"},{"command":"powerClaude.worktreeManager.refresh","title":"⚡ Power Claude: Refresh Worktree Manager","category":"Power Claude"},{"command":"powerClaude.worktreeManager.openFolder","title":"⚡ Power Claude: Open Worktree Folder","category":"Power Claude"},{"command":"powerClaude.worktreeManager.reclaimDryRun","title":"⚡ Power Claude: Reclaim Landed (Dry-Run)","category":"Power Claude"},{"command":"powerClaude.sessionReply","title":"⚡ Power Claude: Reply to Session","category":"Power Claude"},{"command":"powerClaude.autoRotationEngine.enable","title":"Power Claude: Enable Auto-Rotation Engine (recommended — use at own risk)","category":"Power Claude"},{"command":"powerClaude.autoRotationEngine.chooseManual","title":"Power Claude: Keep Manual Multi-Account (Auto-Rotation OFF)","category":"Power Claude"},{"command":"powerClaude.autoRotationEngine.showStatus","title":"Power Claude: Show Auto-Rotation Engine Status","category":"Power Claude"},{"command":"powerClaude.autoRotationEngine.appealKit","title":"Power Claude: Download Appeal Kit","category":"Power Claude"},{"command":"powerClaude.runProof","title":"Power Claude: Claude Health Check (Proof Mode)","category":"Power Claude"},{"command":"powerClaude.runProofRecover","title":"Power Claude: Recover Unfinished Session (Proof)","category":"Power Claude"},{"command":"powerClaude.runProofProtect","title":"Power Claude: Protect Future Sessions (Proof)","category":"Power Claude"},{"command":"powerClaude.harnessHealth.refresh","title":"Refresh Harness Health","category":"Power Claude"},{"command":"powerClaude.flow.sidebar.refresh","title":"Power Claude: Refresh Harness Flow Sidebar","category":"Power Claude","icon":"$(refresh)"},{"command":"powerClaude.harnessFlow.focus","title":"Power Claude: Show Harness Flow","category":"Power Claude","icon":"$(type-hierarchy)"},{"command":"powerClaude.focusSidePanel","title":"Power Claude: Focus Right Panel (Profiles & Home)","category":"Power Claude"},{"command":"powerClaude.addHostAccount","title":"Power Claude: Add Host Account (lab)","category":"Power Claude"},{"command":"powerClaude.removeHostAccount","title":"Power Claude: Remove Host Account (lab)","category":"Power Claude"},{"command":"powerClaude.activateHostAccount","title":"Power Claude: Activate Host Account (lab)","category":"Power Claude"},{"command":"powerClaude.rotateHostAccount","title":"Power Claude: Rotate Host Account (lab)","category":"Power Claude"},{"command":"powerClaude.hostAccountOnLimit","title":"Power Claude: Host Limit → Rotate (lab)","category":"Power Claude"},{"command":"powerClaude.seedLabGrokAccounts","title":"Power Claude: Seed 6 Lab Grok Accounts","category":"Power Claude"},{"command":"powerClaude.selectHostProvider","title":"Power Claude: Select Host Provider Tab","category":"Power Claude"},{"command":"powerClaude.importLiveGrokAccounts","title":"Power Claude: Import Live Grok Account(s) from ~/.grok","category":"Power Claude"},{"command":"powerClaude.importLiveHostAccounts","title":"Power Claude: Import Live Host Account(s) (Grok/Codex/Gemini)","category":"Power Claude"},{"command":"powerClaude.launchHostSession","title":"Power Claude: Launch Host Session (isolated seat)","category":"Power Claude"},{"command":"powerClaude.pruneLabHostAccounts","title":"Power Claude: Prune Lab Host Accounts","category":"Power Claude"},{"command":"powerClaude.trustControl.showStatus","title":"Power Claude: HURC Trust Control Status","category":"Power Claude"},{"command":"powerClaude.trustControl.refresh","title":"Power Claude: Refresh Trust Control Status","category":"Power Claude"},{"command":"powerClaude.workflowBuilder.open","title":"Power Claude: Open Workflow Builder","category":"Power Claude","enablement":"true"},{"command":"powerClaude.commandCenterV3.focus","title":"Power Claude: Focus Home · New","category":"Power Claude"},{"command":"powerClaude.dashboard.focus","title":"Power Claude: Focus Home · Classic","category":"Power Claude"},{"command":"powerClaude.dashboardV2.focus","title":"Power Claude: Focus Home · View 2.0","category":"Power Claude"},{"command":"powerClaude.council.open","title":"Power Claude: Open Council","category":"Power Claude"},{"command":"powerClaude.council.debate","title":"Power Claude: Debate This","category":"Power Claude"},{"command":"powerClaude.council.redTeam","title":"Power Claude: Red Team Current Diff","category":"Power Claude"},{"command":"powerClaude.council.architecture","title":"Power Claude: Architecture Review","category":"Power Claude"},{"command":"powerClaude.council.reviewPlan","title":"Power Claude: Review Plan","category":"Power Claude"},{"command":"powerClaude.council.run","title":"Power Claude: Run Council","category":"Power Claude"}],"menus":{"view/title":[{"command":"powerClaude.rescan","when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3 || view == powerClaude.tree","group":"navigation@1"},{"command":"powerClaude.refresh","when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3 || view == powerClaude.tree","group":"navigation@2"},{"command":"powerClaude.sessions.openList","when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@0"},{"command":"powerClaude.tasks.refresh","when":"view == powerClaude.taskBoard","group":"navigation@1"},{"command":"powerClaude.sessions.openTree","when":"view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@0.5"},{"command":"powerClaude.searchSessions","when":"view == powerClaude.sessionExplorer","group":"navigation@1"},{"command":"powerClaude.searchOpenTabsQuickPick","when":"view == powerClaude.sessionExplorer && config.powerClaude.openTabSearch.enabled","group":"navigation@1.5"},{"command":"powerClaude.sessions.openLane","when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@1.7"},{"command":"powerClaude.openMultiSessionGraph","when":"view == powerClaude.sessionExplorer","group":"navigation@2"},{"command":"powerClaude.resumeStalledSessions","when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@3"},{"command":"powerClaude.crossModelSessions","when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@3.5"},{"command":"powerClaude.warmAllSessionTabs","when":"view == powerClaude.sessionExplorer || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@4"},{"command":"powerClaude.workflowFlow.open","when":"view == powerClaude.flow || view == powerClaude.dashboard || view == powerClaude.dashboardV2 || view == powerClaude.commandCenterV3","group":"navigation@0"},{"command":"powerClaude.flow.sidebar.refresh","when":"view == powerClaude.flow","group":"navigation@1"},{"command":"powerClaude.harnessHealth.refresh","when":"view == powerClaude.flow","group":"navigation@2"},{"command":"powerClaude.jargonCoach.configure","when":"view == powerClaude.jargonCoach","group":"navigation@1"}],"view/item/context":[{"command":"powerClaude.sessionResume","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@1"},{"command":"powerClaude.sessionResumeWithPrompt","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"0_resume@2"},{"command":"powerClaude.openSessionDetail","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@1"},{"command":"powerClaude.openSessionGraph","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@2"},{"command":"powerClaude.flowExplorer.openForSession","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3"},{"command":"powerClaude.copySessionId","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@1"},{"command":"powerClaude.copySessionName","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@2"},{"command":"powerClaude.copySessionFirstPrompt","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord && config.powerClaude.sessionExplorer.copySession.enabled","group":"3_copy@3"},{"command":"powerClaude.openPreCommitReview","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"1_inspect@3"},{"command":"powerClaude.addSessionTag","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@1"},{"command":"powerClaude.togglePinSession","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@2"},{"command":"powerClaude.setSessionStatus","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@4"},{"command":"powerClaude.removeSessionTag","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"2_metadata@3"},{"command":"powerClaude.archiveSession","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@1"},{"command":"powerClaude.unarchiveSession","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@2"},{"command":"powerClaude.exportSession","when":"view == powerClaude.sessionExplorer && viewItem == sessionRecord","group":"9_lifecycle@3"},{"command":"powerClaude.openTouchedFile","when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@1"},{"command":"powerClaude.diffTouchedFile","when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"0_open@2"},{"command":"powerClaude.copyTouchedFilePath","when":"view == powerClaude.filesTouched && viewItem == fileTouchRecord","group":"9_clipboard@1"}]},"colors":[{"id":"powerClaude.badge.enabled","description":"Power Claude brand-stamp badge — feature enabled.","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"}},{"id":"powerClaude.badge.disabled","description":"Power Claude brand-stamp badge — feature disabled.","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"}},{"id":"powerClaude.session.active","description":"Session state — active (Claude's last turn complete, awaiting user).","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"}},{"id":"powerClaude.session.processing","description":"Session state — processing (Claude is mid-message / streaming a response).","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"}},{"id":"powerClaude.session.completed","description":"Session state — completed (all tasks done).","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"}},{"id":"powerClaude.session.abandoned","description":"Session state — abandoned (left mid-task, no recent activity).","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"}},{"id":"powerClaude.session.stale","description":"Session state — stale (idle past the stale threshold).","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"}},{"id":"powerClaude.session.archived","description":"Session state — archived.","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"}},{"id":"powerClaude.status.active","description":"Status palette - active / in focus (purple). The shared cross-surface status color, matching the session-list rows.","defaults":{"dark":"#7c3aed","light":"#7c3aed","highContrast":"#7c3aed","highContrastLight":"#7c3aed"}},{"id":"powerClaude.status.busy","description":"Status palette - working / in progress (blue).","defaults":{"dark":"#0969da","light":"#0969da","highContrast":"#0969da","highContrastLight":"#0969da"}},{"id":"powerClaude.status.ok","description":"Status palette - healthy / done / passing (green).","defaults":{"dark":"#1a7f37","light":"#1a7f37","highContrast":"#1a7f37","highContrastLight":"#1a7f37"}},{"id":"powerClaude.status.warn","description":"Status palette - caution / needs review (amber).","defaults":{"dark":"#bf8700","light":"#bf8700","highContrast":"#bf8700","highContrastLight":"#bf8700"}},{"id":"powerClaude.status.error","description":"Status palette - blocking / failed / critical (red).","defaults":{"dark":"#cf222e","light":"#cf222e","highContrast":"#cf222e","highContrastLight":"#cf222e"}},{"id":"powerClaude.status.neutral","description":"Status palette - idle / inactive / unknown (grey).","defaults":{"dark":"#8a8a96","light":"#8a8a96","highContrast":"#8a8a96","highContrastLight":"#8a8a96"}}],"configuration":[{"title":"Power Claude: ⚡ Power Mode (Parallel Dispatch + Smart 429 Routing)","order":1,"properties":{"powerClaude.proxy.parallelAccounts":{"type":"boolean","default":true,"order":1,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.parallelMode":{"type":"string","enum":["round-robin","least-utilized","smart"],"enumDescriptions":["Round-robin — cycle through every account in strict turn order. Gives every account a strictly EQUAL request count. Best only when every account is on the same plan tier; with mixed tiers it can push a smaller account into 429s while larger accounts sit underused.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."],"default":"smart","order":2,"description":"Multi-account routing mode when Auto-Rotation Engine is enabled. Default smart: least-utilized + RPM-aware fan-out + reset burn-down.","markdownDescription":"Multi-account routing when Auto-Rotation Engine is on. **smart** (default) includes reset burn-down."},"powerClaude.proxy.resetBurnDown":{"type":"boolean","default":true,"order":2,"description":"Prefer seats near 5h/7d usage reset with residual capacity so quota is not left unused at window roll. Default ON.","markdownDescription":"**Reset burn-down** (default **ON**): when multi-account rotation is on, prefer accounts near a 5h/7d reset that still have residual capacity so usage is not left on the table. Progressive urgency in the last ~90 minutes."},"powerClaude.proxy.autoApplyExpiringExtraUsage":{"type":"boolean","default":true,"order":2,"description":"Auto-apply unused extra-usage / reset credits 5 minutes before they expire so they are not lost. Only when the grant expires. Default ON.","markdownDescription":"**Auto-apply expiring extra usage** (default **ON**): unused extra-usage or reset credits that **expire** are applied 5 minutes before expiry. Grants without an expire date are never auto-applied. Turn off to leave unused credits alone."},"powerClaude.proxy.parallelPool":{"type":"array","items":{"type":"string"},"default":[],"order":3,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRotationEngine.enabled":{"type":"boolean","default":false,"description":"Opt-in Auto-Rotation Engine (classic rotational functionality). OFF by default until Setup Guide / warning ack. RECOMMENDED for multi-account continuity after reading the grey-area warning. Enable via Setup Guide, Command Palette, or `pc rotation engine enable --i-understand`. USE AT YOUR OWN RISK.","markdownDescription":"**Recommended product path** after Setup Guide warning. Read-only mirror of opt-in state. Enable via **Run Setup Guide** / `Power Claude: Enable Auto-Rotation Engine` or `pc rotation engine enable --i-understand`. Default **OFF** until explicit ack. Use at own risk. See docs/product/rotation-modes.md."},"powerClaude.harnessHealth.statusBar.enabled":{"type":"boolean","default":true,"description":"Show harness health (trusted/untrusted) on the status bar. Click opens Flow Explorer. Fail-closed: missing evidence never paints as healthy."},"powerClaude.trustControl.statusBar.enabled":{"type":"boolean","default":true,"description":"Show HURC Deterministic Trust Control protection state on the status bar (HARDENED/CONTAINED/DEGRADED/OFF)."}}},{"title":"Power Claude: Context Optimization (Token Saver)","properties":{"powerClaude.tokenSaver.level":{"type":"number","minimum":0,"maximum":4,"default":3,"order":0,"markdownDescription":"**Token Saver level** — the ease/optimizer slider position (use the slider in the Power Claude dashboard for the full per-level strategy view).\n\n- **0 Off** — no trimming\n- **1 Light** — lossless log + command-output cleanup\n- **2 Lean** — + diff condensing\n- **3 Balanced** *(default)* — + JSON minify\n- **4 Max (local)** — most aggressive local trimming\n\nMoving the slider sets the toggles below; editing a toggle directly puts you in **Custom**. Runs entirely on your machine — no external services."},"powerClaude.contextOptimize.enabled":{"type":"boolean","default":true,"order":1,"description":"Token Saver — the proxy trims low-signal noise out of what Claude reads (command output, logs, diffs) before forwarding, so more of the capacity you already pay for goes to real work. Reversible and audited; high-signal lines (errors, stack frames, diff changes) are always preserved. ON by default — dial it down with the profile below, or turn it off here.","markdownDescription":"**Token Saver** — the proxy optimizes the bulky `tool_result` blocks in each request (command output, logs, diffs, JSON) **before** forwarding to Claude, so leaner context leaves more room for real work.\n\n- **Lossless where possible** (JSON is whitespace-minified) and **never fabricates** — it only drops/collapses low-signal noise.\n- **High-signal lines always survive**: errors, stack frames, diff changes, hunk headers.\n- Every optimization is **recorded** (see the dashboard) and the original is retained.\n- Choose how aggressive via `#powerClaude.contextOptimize.profile#`, and which content kinds below.\n\nON by default — dial it down or turn it off here."},"powerClaude.contextOptimize.profile":{"type":"string","enum":["conservative","standard","aggressive"],"enumDescriptions":["Conservative — only replaces a block when the saving is large and obviously safe. Highest fidelity, lowest savings.","Standard (default) — meaningful savings while preserving every high-signal span.","Aggressive — maximizes density; replaces whenever there is any real saving. Still never drops preserved (error/stack/diff) lines."],"default":"standard","order":2,"description":"How aggressively the Token Saver trims context. 'standard' (default) balances savings and fidelity; 'conservative' is most cautious; 'aggressive' maximizes savings while still preserving all high-signal lines."},"powerClaude.contextOptimize.commandOutput":{"type":"boolean","default":true,"order":3,"description":"Optimize shell/command output blocks (the noisiest tool results — ls, build dumps, test logs). Safe to keep on."},"powerClaude.contextOptimize.log":{"type":"boolean","default":true,"order":4,"description":"Optimize log blocks — collapse repeated/heartbeat lines while preserving every error and warning. Safe to keep on."},"powerClaude.contextOptimize.diff":{"type":"boolean","default":true,"order":5,"description":"Optimize unified-diff blocks — keep every changed line and hunk header, trim the unchanged context around them. On by default."},"powerClaude.contextOptimize.json":{"type":"boolean","default":true,"order":6,"description":"Optimize JSON payloads — lossless whitespace minification (semantically identical). On by default; safe because it preserves JSON semantics exactly."}}},{"title":"Power Claude: ⚡ Warm Compacting (skip the compaction wait)","properties":{"powerClaude.warmCompacting.enabled":{"type":"boolean","default":true,"order":1,"description":"Warm Compacting — when your session nears Claude Code's compaction threshold, Power Claude pre-builds an abstractive summary of the earlier part of the conversation in the background (kept entirely OUT of your live context, in a sidecar) and substitutes it onto the request near the wall so the multi-minute compaction freeze is avoided. The recent tail is always kept verbatim. ON by default; fail-open (any unsafe case falls back to normal compaction). To watch the projected token drop without altering requests first, turn off Apply Rewrite for a measure-only mode.","markdownDescription":"**Warm Compacting** — eliminate Claude Code's long compaction pause.\n\n- When your session approaches the compaction threshold, Power Claude pre-summarizes the earlier ~80% of the conversation **in the background** (off the hot path) and stores it **sidecar-only** — it never enters your live context and never touches the transcript.\n- When the wall is near, the warm summary + the **verbatim** recent tail merge into one compact context that is substituted onto the request, so the native compaction freeze is avoided.\n- **No regression by design:** a runtime invariant detector auto-disables the splice if it ever stops working, and any unsafe case (stale marker, unsafe cut point) falls back to normal compaction.\n- ON + live by default; license-gated. To verify before it alters requests, turn off `#powerClaude.warmCompacting.applyRewrite#` for a measure-only mode that reports the projected token drop."},"powerClaude.warmCompacting.triggerPercentOfCompactThreshold":{"type":"number","default":80,"minimum":10,"maximum":100,"order":2,"description":"Fire the background warm build when context reaches this percent of the real compact threshold (so it runs close to the wall, not early). Default 80. Combined with autocompactPercentOfWindow: warm fires at autocompactPercentOfWindow × this/100 of the window (e.g. 90 × 80/100 ≈ 72% full)."},"powerClaude.warmCompacting.maxWarmCompactsPerSession":{"type":"number","default":1,"minimum":1,"maximum":20,"order":3,"description":"How many warm compacts to build per session before stopping (efficiency cap). Default 1 — most sessions need it at most once."},"powerClaude.warmCompacting.maxWarmSummaryTokens":{"type":"number","default":3000,"minimum":500,"maximum":20000,"order":4,"description":"Clamp the abstractive warm summary (of the earlier ~80%) to this many tokens. Default 3000."},"powerClaude.warmCompacting.maxInjectedCompactTokens":{"type":"number","default":4500,"minimum":500,"maximum":30000,"order":5,"description":"If the merged compact (warm summary + tail) would exceed this many tokens, skip the warm compact and let normal compaction run. Default 4500."},"powerClaude.warmCompacting.autocompactPercentOfWindow":{"type":"number","default":90,"minimum":50,"maximum":100,"order":6,"description":"Defines the 'real compact threshold' as a percent of the model context window (Claude Code does not expose its autocompact point). Default 90. Honors the CLAUDE_AUTOCOMPACT_PCT_OVERRIDE environment variable when set."},"powerClaude.warmCompacting.applyRewrite":{"type":"boolean","default":true,"order":7,"description":"Live-splice gate. ON (default) = the proxy substitutes the pre-built merged compact onto the outbound request when near the wall, actually avoiding Claude Code's compaction freeze. OFF = measure-only: Power Claude builds + measures the warm compact but never alters a request (use this to watch the projected token drop on your own sessions first). Fail-open + marker validation + a kill switch (POWER_CLAUDE_WARM_COMPACT=0) protect against regression either way — if anything is unsafe it falls back to normal compaction."}}},{"title":"Power Claude: 🎯 VS Code Fixes","properties":{"powerClaude.preserveFocusFix.enabled":{"type":"boolean","default":false,"description":"Stop the Claude Code VS Code extension from yanking your cursor when its panel reveals, output arrives, a session reopens, or a file gets shown. Patches the installed extension to pass preserveFocus:true on every autonomous reveal/show/showTextDocument call. Fixes the upstream focus-steal tracked in anthropics/claude-code#32726 — open with no shipping fix as of 2026-05-20. Patch is idempotent, anchor-based (survives extension version drift), and reversible via the .preserve-focus.orig backup. Re-run after each extension upgrade is automatic when preserveFocusFix.autoRunOnUpgrade is ON. Reload the VS Code window after the first apply for the change to take effect."},"powerClaude.preserveFocusFix.autoRunOnUpgrade":{"type":"boolean","default":true,"description":"When ON (and preserveFocusFix.enabled is also ON), Power Claude detects Claude Code extension upgrades (via extension.js mtime change) and re-applies the preserve-focus patch automatically. When OFF, you must manually re-run via the command \"Power Claude: Re-apply preserve-focus patch\" after each Claude Code auto-update."}}},{"title":"Power Claude: 🎨 Branding & Theme","properties":{"powerClaude.scrollbarTheme.enabled":{"type":"boolean","default":true,"description":"Theme VS Code's scrollbars in Power Claude purple, globally — via workbench.colorCustomizations (scrollbarSlider.background/hoverBackground/activeBackground). This is a global VS Code setting, not scoped to Power Claude's own views: VS Code has no per-extension or per-tab scrollbar API. On by default. Power Claude snapshots whatever scrollbar colors you had before applying its own, and restores them exactly (or removes the keys, if you had none) the moment you turn this off or uninstall Power Claude — it never overwrites a scrollbar color you later set by hand.","markdownDescription":"**Scrollbar Theme** — theme VS Code's scrollbars in Power Claude purple.\n\n- Writes to the **global** `workbench.colorCustomizations` (`scrollbarSlider.background` / `.hoverBackground` / `.activeBackground`) — this is a VS Code-wide setting, not scoped to Power Claude's own views. VS Code has no per-extension or per-tab scrollbar API.\n- **On by default.**\n- Non-destructive: Power Claude snapshots whatever scrollbar colors you had *before* applying its own, and restores them exactly — or removes the keys if you had none — the moment you turn this off or uninstall Power Claude. It never overwrites a scrollbar color you later set by hand."}}},{"title":"Power Claude: 📘 Jargon Coach (Technical Fluency)","properties":{"powerClaude.jargonCoach.enabled":{"type":"boolean","default":true,"markdownDescription":"When enabled, Jargon Coach can explain technical terms at the configured depth. Toggle via **Power Claude: Toggle Jargon Coach Explanations** or the Jargon Coach view. Syncs with Hurc `fluency` profile shared across Power Claude / Power Codex / Power Grok."},"powerClaude.jargonCoach.explanationLevel":{"type":"string","default":"2","enum":["0","1","2","3","4","5","manual","adaptive"],"enumDescriptions":["0 — Plain language: definitions and a short analogy when useful","1 — Guided foundation: definitions plus why each term matters","2 — Working builder: brief first-use parenthetical explanations","3 — Practitioner: only uncommon or load-bearing terms","4 — Advanced: only specialized or ambiguous terms","5 — Expert: only very obscure terms","manual — Explain terms only when you ask","adaptive — Let Hurc Technical Fluency pick depth from context"],"markdownDescription":"Explanation depth for automatic jargon coaching (levels **0–5**), **manual** (ask-only), or **adaptive**. Same modes as **Power Claude: Configure Jargon Coach** and `hurc fluency mode`. Opens Settings → search **Jargon Coach**."},"powerClaude.jargonCoach.openOnConfigure":{"type":"boolean","default":true,"markdownDescription":"After you pick a level in **Configure Jargon Coach**, open the Jargon Coach sidebar view."}}},{"title":"Power Claude: 🧩 Claude Core","properties":{"powerClaude.tabWarming.enabled":{"type":"boolean","default":false,"description":"[EXPERIMENTAL — DEVELOPER ONLY, NOT AVAILABLE IN RELEASED BUILDS] Tab Warming would eager-load open Claude Code session tabs after VS Code restores. It is disabled in all public builds and does nothing here: the only way VS Code loads a restored (dormant) webview is to REVEAL its tab, which steals focus / changes the displayed tab — there is no API to load a webview in the background, so warming cannot be made unobtrusive. It is gated to PC_DEV_BUILD dev builds (and default-OFF even there) while a non-focus-stealing approach is researched. Leave OFF.","markdownDescription":"**Tab Warming** *(experimental — developer-only; does nothing in released builds)*\n\n- Goal: eager-load open Claude Code session tabs after VS Code restores, so you don't click each one.\n- **Why it's disabled for everyone:** the *only* way VS Code loads a restored (dormant) webview is to **reveal** its tab, which makes it the active/displayed tab — i.e. it **steals focus**. VS Code has **no API to load a webview in the background** (proven), so warming cannot run silently. Enabling it caused focus to jump to a session tab every few seconds.\n- It is **gated out of all public builds** (compile-time `__PC_DEV__`) and stays **default-OFF** even in developer builds, until a non-focus-stealing load path is found.\n- Leave this **OFF**."},"powerClaude.tabWarming.resumeOnLoad":{"type":"boolean","default":false,"description":"When preloading, also inject your wake-up prompt (powerClaude.resumePrompt) into each session as it loads — i.e. RESUME every session, not just render it. Default OFF: tabs are loaded for instant viewing but left dormant (no turn is taken). Turn ON only if you want every restored session to immediately pick up where it left off."},"powerClaude.tabWarming.minTabs":{"type":"number","default":2,"minimum":1,"maximum":50,"description":"Skip the preload sweep unless at least this many Claude tabs are open — there's no point flickering through one or two. Default 2."},"powerClaude.tabWarming.maxTabs":{"type":"number","default":24,"minimum":1,"maximum":200,"description":"Hard ceiling on how many tabs one sweep will instantiate, to bound memory/CPU on very large session sets. Beyond this, the rest stay lazy until you click them. Default 24."},"powerClaude.tabWarming.idleQuietMs":{"type":"number","default":8000,"minimum":0,"maximum":60000,"description":"How long (ms) you must be idle before the visible preload sweep dares to start, so it never flips tabs while you're actively working. Clamped to [0, 60000]. Default 8000 (8s)."},"powerClaude.tabWarming.manualPerTabTimeoutMs":{"type":"number","default":4000,"minimum":250,"maximum":20000,"description":"Used by the manual 'Load All Session Tabs' command. Each tab advances the instant its conversation reports loaded; this is the fallback dwell (ms) to wait per tab if that signal never fires, so a slow tab never stalls the sweep. Default 4000 (4s)."},"powerClaude.customSessionTitles.enabled":{"type":"boolean","default":true,"description":"Let you rename a session's editor-tab title (via 'Power Claude: Rename Session'). Claude Code auto-generates a title per session and keeps changing it as the conversation evolves; when this is on, a title you set is pinned and re-applied whenever Claude Code re-renders, so it stays put. Turn it off (or use 'Restore Claude Code to Stock') to go back to Claude Code's own titles."},"powerClaude.customSessionTitles.showSessionIdSuffix":{"type":"boolean","default":false,"description":"Append the session's short id (first 8 chars of the UUID, e.g. ' · a9cb7f06') to its editor-tab title, so you can read and reference the real session id straight from the tab. Off by default. Display-only — it never changes how Power Claude tracks tabs internally, so tab-state icons and Tab Warming are unaffected. Note: VS Code truncates long tab titles, so the suffix may not always be visible; for the full id use 'Copy Session Id' in the Session Explorer or the dashboard."},"powerClaude.sessionExplorer.copySession.enabled":{"type":"boolean","default":true,"description":"Show the 'Copy Session Id / Name / Prompt Text' actions when you right-click a session in the Session Explorer. On by default; turn it off to remove those copy actions from the menu."},"powerClaude.resumeDeepLink.enabled":{"type":"boolean","default":true,"description":"Let Power Claude handle vscode://neural-llm.power-claude/resume?sid=<id> deep links (emitted by the 'pc resume-stalled' table) — clicking a session id resumes that session in a terminal tab via 'claude --resume'. On by default; turn it off to ignore resume deep links."},"powerClaude.crossModel.sessionStartAdvisory":{"type":"boolean","default":false,"description":"When true, SessionStart may inject a short advisory listing unfinished sessions on OTHER LLM vendors (Claude↔Grok) for this workspace. DEFAULT OFF. Never auto-resumes foreign CLIs — inventory only. Mirrors to ~/.power-claude/state/cross-model-advisory.enabled for the bash hook. Requires trial/paid session-cross-model feature pack."},"powerClaude.crossModel.statusBar.enabled":{"type":"boolean","default":true,"description":"Show a status-bar badge when unfinished sessions exist on OTHER LLM vendors for this workspace (advisory only). Requires trial/paid session-cross-model feature pack. Click opens Power Claude: Cross-Model Hanging Sessions."},"powerClaude.messageTimestamps.enabled":{"type":"boolean","default":true,"description":"Stamp each chat message in the Claude Code panel with your local wall-clock time (HH:MM). Pure client-side: the value is rendered by the webview after the message lands, never enters the JSONL transcript, and is invisible to the LLM context (so it costs zero tokens). Patches the installed extension's webview/index.js with a sentinel-bracketed append that uses a MutationObserver to stamp new bubbles as they render. Patch is idempotent and reversible; re-applied automatically on Claude Code auto-update via the extension self-heal."},"powerClaude.chatScrollNav.enabled":{"type":"boolean","default":true,"description":"Show floating purple scroll-to-top (↑) and scroll-to-bottom (↓) buttons on the right edge of the Claude Code chat thread. One click jumps a long conversation to its beginning or its newest message. The buttons only appear while the thread is actually scrollable, and respect prefers-reduced-motion (instant jump instead of a smooth scroll). Patches the installed extension's webview/index.js with a sentinel-bracketed append (pure DOM, no network); reversible; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect.","markdownDescription":"**Chat Scroll Buttons** — floating purple **↑ / ↓** buttons on the right edge of the *Claude Code chat thread*.\n\n- One click jumps a long conversation to its **top** or to the **newest message**.\n- Buttons only appear while the thread is actually scrollable; `prefers-reduced-motion` makes the jump instant.\n- **On by default.** Reload the window after toggling."},"powerClaude.chipDefaultOff.enabled":{"type":"boolean","default":true,"description":"Default the Claude Code \"include current file selection in context\" chip to OFF on each new chat, and stamp it with the Power Claude attribution badge. Without this, the chip silently defaults ON and feeds your active editor file into every prompt. Patches the installed extension's webview/index.js with a sentinel-bracketed append (MutationObserver-driven, idempotent, anchor-based so it survives extension version drift). Reversible via the .orig backup; re-applied automatically on Claude Code auto-update via the extension self-heal. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.sessionList.enabled":{"type":"boolean","default":true,"description":"Decorate each row in Claude Code's session-history dropdown (the clock icon menu) with a live state pill: RUNNING (another window is driving the session now) / INCOMPLETE (todos still pending) / COMPLETE (last TodoWrite finished) / IDLE. State is push-fed via Server-Sent Events from the Power Claude proxy — no polling, scales to 20+ concurrent windows at O(1) work per change. Patches the installed extension's webview/index.js with a sentinel-bracketed append; reversible; re-applied on every activate so a proxy-port change takes effect without manual intervention."},"powerClaude.openTabSearch.enabled":{"type":"boolean","default":true,"description":"Power Search — search session conversation CONTENT (not just titles). Surfaces: (1) command Power Search Sessions + keybind ctrl+alt+shift+s / cmd+alt+shift+s; (2) Session Explorer title ⚡ Power Search icon; (3) deep link vscode://neural-llm.power-claude/power-search; (4) ⚡ Power Search control in Claude Code's native session dropdown (next to the PC stamp). Streams .jsonl transcripts, ranks matching turns, previews snippets; one click reveals the session tab. Dashboard Sessions list can widen scope to every indexed session. Flip OFF to hide all Power Search affordances (no uninstall). Pro/trial gated; reveal-tab stays free. Note: VS Code does not allow scrolling inside Claude Code's webview, so highlights render in Power Claude surfaces."},"powerClaude.conversationSync.enabled":{"type":"boolean","default":true,"description":"When another VS Code window, computer, or tab is actively writing to the same session you have open, surface a 'running elsewhere' banner and highlight new messages with a green diff rail as they stream in. Prevents you from typing into a stale view (and re-running work that already finished elsewhere, costing tokens and creating divergent code paths). Driven by Server-Sent Events from the Power Claude proxy off the same JSONL the session-list watcher already tails — no polling, O(1) per new line. Per-window CLI gate via localStorage \"pc-feature-conversation-sync\"; reversible. Reload the VS Code window after toggling."},"powerClaude.animatedLoader.mode":{"type":"string","enum":["append","override","off"],"enumDescriptions":["Append (default) — show the Power Claude loader next to Claude Code's native status line (both visible).","Override — show the Power Claude loader plus a 'running…' label AND hide the native status line.","Off — do not inject the loader (reverts the patch)."],"default":"append","description":"Show a branded Power Claude animated loader (dual opposing-rotation rings around the Power Claude lightning bolt) in the Claude Code chat whenever a turn is in progress — a dependable 'this session is running' cue that does NOT drop out the way Claude Code's native 'Whirring…/Thinking…' verb does during tool-execution / between-stream gaps. Keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch — no network, no tokens. 'append' (default) shows it beside the native status; 'override' also hides the native status line; 'off' removes it. Patches the installed extension's webview/index.js with a sentinel-bracketed append; idempotent, reversible, re-applied on every activate so a mode change takes effect. Reload the VS Code window after toggling.","markdownDescription":"Show a **branded Power Claude animated loader** (dual opposing-rotation rings around the Power Claude ⚡ bolt) in the Claude Code chat whenever a turn is in progress.\n\nA dependable *'this session is running'* cue that does **not** drop out the way Claude Code's native \"Whirring…/Thinking…\" verb does during tool-execution / between-stream gaps — it is keyed off the persistent stop/interrupt affordance, not the flaky verb text. Pure client-side webview patch (no network, no tokens).\n\n- **append** *(default)* — show it beside the native status\n- **override** — also hide the native status line and show a `running…` label\n- **off** — remove it\n\nPatches the installed extension's `webview/index.js` (sentinel-bracketed, idempotent, reversible, re-applied on every activate). Reload the VS Code window after toggling."},"powerClaude.usageOverride.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.tabState.enabled":{"type":"boolean","default":true,"description":"Override Claude Code's editor-tab icon with a state-colored Power Claude bolt — running (green), incomplete (amber), complete (blue), idle (gray). Lets you read every open session's state straight off the tab strip without clicking into it. Matches the .pc-sl-badge palette used in the clock-icon session-history dropdown so the visual language stays consistent. Patches Claude Code's extension.js (rename_tab handler) to call back into Power Claude's tab-icon resolver; reversible; re-applied on every activate. Reload the VS Code window after toggling for the change to take effect."},"powerClaude.claudeCore.lockoutVisibility.enabled":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.claudeCore.lockoutVisibility.toast":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.notifications.dwellMs":{"type":"number","default":20000,"minimum":0,"maximum":300000,"description":"How long (ms) an autonomous condition — an Anthropic overload/throttle, an all-accounts lockout, or native fallback — must stay CONTINUOUSLY active before Power Claude shows its notification. A quick proxy restart or a brief flap that clears within this window never notifies, so you aren't interrupted by transient blips. Clamped to [0, 300000]. Default 20000 (20s)."},"powerClaude.notifications.cooldownMs":{"type":"number","default":600000,"minimum":0,"maximum":3600000,"description":"Minimum gap (ms) between two of the SAME autonomous notification. After one shows, Power Claude stays quiet for this long even if the condition keeps flapping (locking, clearing, re-locking) — so a rapidly re-tripping overload yields at most one notification per window instead of a storm. Clamped to [0, 3600000]. Default 600000 (10 min)."},"powerClaude.userTimeZone":{"type":"string","default":"","description":"Your IANA timezone (e.g. \"America/Denver\") for recovery-time clocks like \"auto-resume around 4:48 PM\" in the VS Code UI. Leave blank to auto-detect (VS Code uses the editor's client zone; a real local machine is also detected from the OS). Set this only if Power Claude's VS Code host is a REMOTE / container box whose clock is UTC and can't see your real zone. Note this setting applies to the VS Code surface; the `pc` CLI / statusline read the TZ environment variable (or the OS zone) instead — export TZ there. When no zone is known, the recovery time is shown as a relative wait (\"under a minute\", \"about 30 minutes\") with no absolute clock, never a wrong one."}}},{"title":"Power Claude: Session Awareness","properties":{"powerClaude.sessionAwareness.doubleLaunchGuard.enabled":{"type":"boolean","default":true,"description":"Prevent two processes from driving the same Claude Code session at once. When you Resume a session that is already being worked on, Power Claude shows a modal (Take-over / Open anyway / Open read-only) instead of silently racing the JSONL writer. Detection combines the heartbeat sidecar (~/.power-claude/state/session-live/, written by claiming VS Code windows) with a live `claude --resume <id>` process scan — so a session driven from a terminal or the `pc` CLI is caught too, not just sibling windows. The same guard backs the CLI: `pc session recover` refuses a busy session unless --force, and `pc session live` lists every session being worked on right now. Two writers on one transcript corrupt history; this gate makes the choice explicit."},"powerClaude.sessionAwareness.statusBadge.enabled":{"type":"boolean","default":true,"description":"Show a lifecycle status badge at the START of each row in the Session Explorer: 🟢 active, ✅ completed, 🟡 stale, ⚠️ abandoned, 📦 archived. When a session is currently live (fresh heartbeat sidecar < 10s old) and its taxonomy status isn't already 'active', a leading 🟢 overlay is prepended. Driven by the same CoreSessionStatusEnricher that powers the live-running indicator; cached per session ID for O(1) re-render."},"powerClaude.sessionAwareness.heartbeatIntervalMs":{"type":"number","default":3000,"minimum":1000,"maximum":30000,"description":"How often (in milliseconds) Power Claude writes a liveness heartbeat sidecar for the session this window owns. Drives the live-running dot in Session Explorer and the freshness check behind the double-launch guard. Clamped to [1000, 30000]. Default 3000 means a session is considered live when its sidecar's last heartbeat is < 10s old (3 ticks)."},"powerClaude.sessionAwareness.worktreeBadges.enabled":{"type":"boolean","default":true,"description":"Badge each linked git worktree's root folder with its lifecycle state, wherever VS Code renders file decorations (Explorer, tabs): link-blue ✓ = LANDED — Power Claude verified the tree is clean AND every file its branch changed is byte-identical in local main, so deleting the worktree loses nothing; orange ● = uncommitted work in progress; yellow ◆ = committed work not yet landed to local main; gray D = detached HEAD. Same verified-accuracy contract and link-blue color as the response summary's LANDED strip — a wrong badge is never shown (probe errors show no badge). States refresh about once a minute."}}},{"title":"Power Claude","order":2,"properties":{"powerClaude.statusBar":{"type":"boolean","default":true,"description":"Show a status-bar item summarising healthy/cooling/blocked counts."},"powerClaude.yourRequestBanner.enabled":{"type":"boolean","default":true,"description":"Legacy alias for 'powerClaude.responseSummary.request.enabled' (kept for back-compat). Controls the 🟦 Your Request banner — the recap of your original ask shown token-free at the end of multi-step Claude responses. When the new responseSummary.request.enabled is explicitly set it takes precedence. Hard-disable everything for one machine by creating ~/.power-claude/state/your-request-banner.disabled."},"powerClaude.deadChatVeil.enabled":{"type":"boolean","default":true,"description":"Dead-chat recovery veil — when the connection to Claude Code is lost (the extension host reloads/recycles and the chat silently stops saving what you type — you type, it spins forever, and your message is lost on the next reload), show a dismissible Power Claude veil over the chat that warns you AND rescues your unsent message to the clipboard. Turn OFF to leave the Claude Code chat untouched."},"powerClaude.deadChatVeil.stallSeconds":{"type":"number","default":12,"minimum":5,"description":"Grace window: how many seconds to wait for the assistant's turn to START after you send a message before the dead-chat veil concludes your message never reached Claude Code (a dead connection). The veil arms ONLY when you actually submit — an idle chat can never trip it — so this is a grace window, not an idle timeout. A healthy turn shows its 'generating' indicator in ~1-2s and disarms well inside it. Lower = earlier warning; higher = extra tolerance for a slow start. Default 12."},"powerClaude.responseSummary.enabled":{"type":"boolean","default":true,"description":"Master switch for the end-of-response summary boxes (🟦 Your Request, 🟥 Remaining Tasks, 🟧 Optional). When OFF, none are injected or rendered (zero context tokens). Use the per-box toggles below to enable any subset."},"powerClaude.responseSummary.enforce":{"type":"boolean","default":true,"markdownDescription":"**Always-on end-of-session status** (default ON — the single opt-OUT). When on, every multi-step reply ends with a status strip: a green **Complete** when nothing genuinely needs you, or a 🟥 **Remaining** strip listing ONLY the items that truly need a decision/action from you (routine SOP — commit / push / publish / deploy — never appears). A lightweight Stop-hook backstop re-nudges Claude if it forgets. Turn OFF to return to the old behavior (a strip only when Claude happens to have something to report). Single-action replies never get a strip either way."},"powerClaude.responseSummary.request.enabled":{"type":"boolean","default":true,"description":"🟦 Your Request — show your original ask, captured at first prompt and rendered token-free by the banner (survives context compaction and resume). When on, Claude is told NOT to restate the request in text, saving output tokens. Disabling hides the request banner."},"powerClaude.responseSummary.request.pinToFirstPrompt":{"type":"boolean","default":true,"description":"🟦 Your Request — keep the banner PINNED to this session's original first prompt. When on (default), the banner locks onto the first ask it captures and never changes — so a context compaction (which rewrites the transcript and scrolls the original message out of view) can no longer drift the banner onto a later message. When off (adaptive), the banner re-reads the first visible message continuously, matching Claude Code's own title behavior (it can change as the session evolves). Takes effect on the next window reload."},"powerClaude.responseSummary.remaining.enabled":{"type":"boolean","default":true,"description":"🟥 Remaining Tasks — show the block listing items that genuinely need your decision, a blocker, or a consequential out-of-band action. Disabling tells Claude to omit it."},"powerClaude.responseSummary.optional.enabled":{"type":"boolean","default":true,"description":"🟧 Optional / Nice-to-have — show the block of suggestions and alternative approaches you might want. Conditional (only appears when there are genuine optional items). Disabling tells Claude to omit it."},"powerClaude.responseSummary.landed.enabled":{"type":"boolean","default":true,"description":"Link-blue LANDED strip — the trustworthy 'work is on local main' signal. Claude is instructed to emit it ONLY after mechanically verifying the worktree work is fully merged to local main (empty diff vs main AND a clean worktree — deleting the worktree would lose nothing). Its absence means the work has NOT landed yet, so you never have to parse prose to know. In 'strips' render mode it paints as a strip in your theme's link blue (textLink.foreground) with a matching square; in 'text' mode Claude writes a 🔵 LANDED line. Pushing to GitHub remains your step."},"powerClaude.responseSummary.render":{"type":"string","enum":["text","strips"],"enumDescriptions":["Text — Claude writes the 🟥 Remaining / 🟧 Optional blocks as lightweight text at the end of each multi-step reply. Always works, in any client (this is the pure-CLI fallback).","Strips (default) — Claude emits a compact token-free marker that Power Claude renders as branded, canonically-colored ⚡ status strips directly in the chat webview (the raw marker is hidden). Saves the output tokens of the text blocks. Uses the Claude Code webview (desktop/Remote-SSH/code-server/web); falls back to a harmless compact block if rendering can't attach."],"default":"strips","markdownDescription":"How the Landed / Remaining / Optional / Complete summary is rendered.\n\n- `strips` *(default)* — Claude emits a compact token-free marker (`pc-rs/v1` fenced block) and **Power Claude renders branded, canonically-colored strips in the chat webview**, hiding the raw marker. Saves the text blocks' output tokens. This is the boxes you see.\n- `text` — Claude writes them as lightweight text. Always works (the pure-CLI fallback).\n\nThe 🟦 Your Request banner is unaffected (it is always rendered token-free by its own DOM banner). `strips` mode patches the Claude Code chat webview and **fails open** — if it can't attach, the compact marker stays visible (mildly ugly, never broken)."},"powerClaude.refreshIntervalMs":{"type":"number","default":0,"description":"Optional auto-refresh interval (milliseconds). 0 = disabled (file watcher already detects changes)."},"powerClaude.autoSelectSoonest":{"type":"boolean","default":true,"description":"When all accounts are exhausted (none healthy), automatically switch the active account to the one with the soonest 5-hour recovery time. This ensures Claude Code's 'resets in X' message matches the rotator dashboard's next-recovery countdown so both timelines agree."},"powerClaude.maskSensitiveData":{"type":"boolean","default":true,"description":"Mask sensitive values (account names, email addresses) in the dashboard Event Log by default, showing only a partial hint (e.g. 'ac••••••••in', 'j***@domain.com'). Masking also covers the row's Copy-JSON payload and the search/sort/filter text so the raw value cannot be recovered by inspection. Use the 👁 Reveal / 🙈 Mask toggle in the Event Log toolbar to flip it for the current view (e.g. before sharing a screenshot). This is a display-only mask and does not affect what is written to logs."},"powerClaude.events.includeApiTrace":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.devMode.autoOpenSessions":{"type":"boolean","default":false,"description":"[EXPERIMENTAL · DEV-ONLY · NOT ACTIVE IN RELEASED BUILDS] Master gate for automatic Claude tab opening. This feature shipped buggy — it repeatedly re-opened session tabs in the wrong workspace context (a visible loop) and triggered claude-vscode's pointless \"Session is already open\" toast — so it is EXCLUDED from public builds: even with this setting ON, released (`__PC_DEV__=false`) builds never auto-open a tab (the code path is build-time stripped). It can only be armed in a PC_DEV_BUILD developer build, and even there it defaults OFF. When OFF (default), Power Claude NEVER auto-opens Claude Code session tabs — not on startup, not after a rate-limit recovery, not when the watchdog detects a stalled session; you launch and resume sessions manually from the dashboard / Sessions Explorer. Terminal-side rate-limit recovery (the bash handler → auto-rewake) is unaffected and still resumes interrupted sessions."},"powerClaude.autoResumeOnRateLimit":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoResumeSessions":{"type":"boolean","default":false,"description":"Automatically reveal the dashboard on VS Code startup so its inline 'Resume Claude Sessions' panel is visible. (Behavior change 2026-04-30: this no longer pops a QuickPick — picking is manual from the UI.) Defaults to OFF. The dev-mode master gate `powerClaude.devMode.autoOpenSessions` does not affect this setting since no tab actually auto-opens; this only chooses whether to focus the dashboard at activation."},"powerClaude.autoSnapshotSessions":{"type":"boolean","default":true,"description":"Automatically refresh the saved-sessions snapshot every 60s and on extension shutdown. When ON, you never need to click 'Snapshot sessions' before reloading VS Code — clicking 'Resume sessions now' after a reload just works. Disable only if you want to manage the snapshot file by hand."},"powerClaude.promptInstallRateLimitHook":{"type":"boolean","default":true,"description":"On activation, prompt to install the rate-limit anchor-emit hook into ~/.power-claude/hooks/rate-limit/handler.sh when it's missing. The hook is what populates the Anchors panel — without it, anchor data stays empty even when accounts hit caps. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent."},"powerClaude.promptInstallLifecycleHooks":{"type":"boolean","default":true,"description":"On activation, prompt to install Power Claude's session lifecycle hooks (session-start.sh / heartbeat.sh / session-end.sh) into ~/.power-claude/hooks/lifecycle/ and register them in ~/.claude/settings.json. Without these hooks, the resilience watchdog can still detect dead sessions but loses precision — no heartbeat signal, no final task-progress snapshot on session end. The prompt is dismissible per-day per-workspace and never auto-modifies your home dir without explicit consent. Manual install: 'Power Claude: Install Session Lifecycle Hooks' from the command palette."},"powerClaude.autoResumeSilently":{"type":"boolean","default":true,"description":"When autoResumeSessions is ON, skip the QuickPick on startup and resume every candidate session immediately. Off by default so you can deselect tabs you don't want re-opened (e.g. one-off explorations from yesterday)."},"powerClaude.directLaunch.enabled":{"type":"boolean","default":true,"description":"Make dashboard action buttons LAUNCH DIRECTLY instead of popping VS Code's top-center Quick Input. When ON (default): buttons with a clear recommended default run it — immediately for trivial choices, or after a short cancelable countdown for consequential ones (e.g. Recover Session runs the recommended strategy; Resume Stalled defaults to the last day). Mandatory-input buttons (license key, search query, billing amounts) still prompt. HARD SAFETY FLOOR: destructive/irreversible actions (recovery strategies that overwrite the transcript or re-run a tool, deleting a token trip) ALWAYS show the chooser regardless of this setting. Turn OFF to restore the classic always-prompt behavior."},"powerClaude.directLaunch.countdownSeconds":{"type":"number","default":8,"minimum":2,"maximum":30,"description":"Seconds the cancelable countdown shows before a consequential direct-launch action (e.g. Recover Session) auto-runs its recommended default. Click 'Choose…' during the countdown to pick manually, or 'Cancel' to abort. Only applies when powerClaude.directLaunch.enabled is ON."},"powerClaude.autoResume.crossEnvironment":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): auto-resume only opens sessions that were started in THIS environment — same machine (hostname), same client surface (desktop/Remote-SSH VS Code vs browser code-server), AND same launcher (VS Code vs CLI). A session you started on another computer, in a different VS Code client surface on the SAME machine (e.g. a browser code-server instance when you're in desktop VS Code), or in a CLI terminal will NOT pop open as a tab here on startup or after a rate-limit recovery; resume those manually from the Session Explorer if you want them. This keeps each editor's auto-resume in its OWN context and prevents one window/surface from grabbing another's sessions. Turn ON only if you treat all your machines/surfaces as one shared workspace and WANT sessions from any of them to be resume-eligible here. The launcher axis is always enforced (CLI-started sessions never auto-open as VS Code tabs regardless of this setting); this setting gates the machine AND client-surface axes together (the per-window axis is gated separately by `powerClaude.autoResume.crossWindow`). Legacy note: sessions created before host/client stamping shipped don't have those records yet, so they're allowed (same-environment assumed) until restarted — a single Claude Code reload stamps host + client on the next session-start."},"powerClaude.autoResume.crossWindow":{"type":"boolean","default":false,"description":"Defaults to OFF (recommended): even within the SAME environment (same machine + same client surface), auto-resume leaves a session alone if it is currently LIVE in a DIFFERENT VS Code window — identified by the window that claimed it in its live session sidecar (vscodeWindowId). With multiple windows of the same surface open (e.g. two Remote-SSH windows), this stops a window from opening another window's sessions as tabs. Turn ON to let any same-environment window resume any same-environment session (the older behavior). Fail-open: a session with no FRESH sidecar (its owning window is closed, or it's a CLI session) is NOT held back by this axis — it falls through to the existing machine/client/in-window-tab gates, so there is no regression."},"powerClaude.resumePrompt":{"type":"string","default":"Continue from where you left off.","description":"Prompt injected into resumed Claude Code sessions to wake them up. Without this, resumed tabs sit dormant — the user has to type something to make the session continue processing. Passed as the second argument to `claude-vscode.editor.open(sessionId, prompt, viewColumn)`. Customize for your workflow (e.g. 'Continue your remaining tasks.', 'Resume the most recent task.'). Empty string disables prompt injection (sessions will reveal but stay dormant)."},"powerClaude.experimental.autoResume.focusResumedTab":{"type":"boolean","default":false,"markdownDescription":"**Experimental.** When Power Claude auto-resumes a session (after a rate-limit recovery, or when the watchdog wakes a stalled one), should it bring the resumed tab to the foreground and FOCUS it?\n\n- **OFF (default)** — *never steals your focus.* The session still resumes, but it loads in the background and Power Claude returns you to the tab you were typing in. This matches normal Claude Code behavior — nothing yanks your active editor.\n- **ON** — reveals and focuses each resumed tab (the legacy behavior), useful if you want to jump straight to a session that needs attention.\n\nAuto-resume itself is unaffected (gated by `powerClaude.autoResumeOnRateLimit` + `powerClaude.devMode.autoOpenSessions`); this only controls whether resuming moves your focus. Because `claude-vscode.editor.open` always reveals the tab it opens, OFF works by snapshotting your active tab before the batch and restoring it afterward — flagged experimental until that restore is proven across desktop / Remote-SSH / code-server."},"powerClaude.recommender.maxHitsPerWeek":{"type":"number","default":1,"minimum":0,"description":"Maximum acceptable rate-limit cap-hits per week before the LLM-usage recommender suggests an upgrade. Lower = recommend upgrades sooner; higher = tolerate more throttling before upgrading. Wired into the Usage tab to display your current tolerance and into recommend.json generation when the recommender CLI runs."},"powerClaude.usage.showApiComparison":{"type":"boolean","default":false,"description":"When ON, the LLM Usage dashboard shows pay-as-you-go Anthropic API cost comparisons (API-equivalent spend, savings-vs-API, $/MTok rate tables, cost projections, model-mix cost breakdown). OFF by default because Power Claude targets users rotating subscription accounts — API-rate comparisons aren't relevant to them. With it OFF the dashboard shows subscription-fleet value instead (capacity savings vs an all-Max-200 fleet). Toggle ON only if you want the API-billing reference figures."},"powerClaude.sessionExplorer.autoArchiveAfterDays":{"type":"number","default":30,"minimum":0,"description":"Sessions older than this many days are automatically marked archived (hidden from the main tree groups, surfaced under the 'Archived' group). Set to 0 to disable auto-archiving. User-applied tags, notes, and ratings persist regardless. Manual Archive / Unarchive context-menu actions always work and override this setting on a per-session basis."},"powerClaude.session.activeWindowMin":{"type":"number","default":15,"minimum":1,"description":"Minutes after a session's last turn that it still reads as \"active\" in the Session Explorer. Lower = sessions drop to \"completed\" sooner after you stop typing; higher = they stay flagged active longer across short breaks. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.staleAfterDays":{"type":"number","default":7,"minimum":1,"description":"Days of inactivity after which an idle (non-abandoned) session ages out to \"stale\" in the Session Explorer. Lower = sessions go stale faster; higher = they stay in the active groups longer. Clamped to a 1-day floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.longRunningMin":{"type":"number","default":120,"minimum":1,"description":"Minutes of total session duration above which a session earns the \"long-running\" auto-tag (filterable in the Session Explorer). Lower = more sessions flagged as marathons; higher = only the longest. Clamped to a 1-minute floor. Takes effect immediately on change (triggers a session re-classification)."},"powerClaude.session.snapshotRetentionDays":{"type":"number","default":7,"minimum":1,"description":"Days a saved session lingers in the resume list before the next auto-snapshot prunes it. Power Claude keeps a dual backup of your work — git snapshot refs plus this resume snapshot — so a longer retention means more abandoned sessions stay one click away from resuming. Lower = a tidier resume list; higher = a longer safety net. Clamped to a 1-day floor; applies on the next auto-snapshot."},"powerClaude.sessionBlame.enabled":{"type":"boolean","default":true,"description":"Master toggle for Session Trail — Power Claude's inline AI-session attribution on every line of code (gutter ⚡, current-line annotation, hover with diff hunk, CodeLens, status bar). Legacy setting key kept for backward compatibility; equivalent to powerClaude.sessionTrail.lineLevel. When git is available, attribution is line-level; without git, falls back to file-level automatically."},"powerClaude.sessionTrail.lineLevel":{"type":"boolean","default":true,"description":"When ON, Session Trail computes line-level attribution by diffing Power Claude's session snapshot refs (refs/power-claude/sessions/<id>/start..end) and projecting through git blame. Requires git on PATH. Falls back to file-level if git is unavailable. Suppress to force file-level even when git is present."},"powerClaude.sessionTrail.gutter":{"type":"boolean","default":true,"description":"When ON, Power Claude renders a ⚡ icon in the editor gutter for every AI-edited line in the visible viewport. Click → opens the contributing session in the Session Detail panel. Disable for a cleaner gutter; the current-line annotation and hover remain active independently."},"powerClaude.sessionTrail.codeLens":{"type":"boolean","default":true,"description":"When ON, Power Claude adds a CodeLens (⚡ N sessions · last X ago) above any function or class that contains AI-edited lines. Click → opens the Edit History side panel for the file."},"powerClaude.sessionTrail.modelFilter":{"type":["string","null"],"default":null,"description":"When set to a model name (e.g., 'claude-opus-4-7'), Session Trail surfaces (gutter, annotation, CodeLens) show only edits made by that model. Set via the 'Power Claude: Filter Session Trail by model…' command."},"powerClaude.fileStats.enabled":{"type":"boolean","default":true,"description":"When ON, a status-bar item shows session activity for the active editor's file (count + active span). Click to pick from a list of sessions that touched the file. Requires the Session Explorer index to be populated."},"powerClaude.tabIcon.statusBar.enabled":{"type":"boolean","default":true,"description":"When ON, a right-aligned status-bar item shows the focused Claude session tab's state (Running / Incomplete / Complete / Idle) with a short explanation. Click for the full legend. The status bar item is the discoverability layer for the editor-tab state icon — VS Code blocks decorating WebviewPanel tooltips directly."},"powerClaude.promptReloadOnClaudeCodeUpdate":{"type":"boolean","default":true,"description":"When ON, Power Claude prompts you to reload the window after Claude Code auto-updates. Claude Code loads fresh, unpatched copies of its own bundles into memory on update, which silently drops Power Claude's tab icons and in-chat decorations until a reload; Power Claude re-applies the patches on disk and then offers a one-time reload (only after the patch has actually landed). Turn OFF to suppress the prompt."},"powerClaude.sessionExplorer.archivedGroupVisible":{"type":"boolean","default":true,"description":"When ON, the Session Explorer tree shows an 'Archived' group containing every session marked archived (auto or manual). Turn OFF to hide the Archived group entirely and rely on tags/search to find old sessions."},"powerClaude.sessionExplorer.rememberResumeChoice":{"type":"boolean","default":true,"description":"When ON, the Session Explorer remembers your most recent answer to 'Continue with prompt' vs 'Resume silently' and reuses it for subsequent right-click → Resume actions in the same VS Code window. Reset by switching VS Code window or clearing the global state."},"powerClaude.timelineTracking.enabled":{"type":"boolean","default":true,"description":"When true, Power Claude's Timeline provider surfaces Claude Code edits in VS Code's Timeline view. Requires installing the PostToolUse hook via 'Power Claude: Install Timeline Hook'."},"powerClaude.licenseKey":{"type":"string","default":"","markdownDescription":"Your Power Claude license key from [neural-llm.com](https://neural-llm.com/power-claude). Leave blank to run your free trial; a key is required to keep paid features active after the trial ends. The key is validated against `neural-llm.com/license/validate` and cached locally for 24 hours — no external calls on every keystroke. Run **Power Claude: Refresh License** from the command palette to clear the cache and re-validate immediately (e.g. after a subscription renewal)."},"powerClaude.reviewPrompt.enabled":{"type":"boolean","default":true,"description":"Occasionally invite you to leave a marketplace review. The decision to show anything is made server-side and only for genuinely satisfied users — never during trial issues, billing problems, or cancellation. You can always trigger it yourself via the \"Power Claude: Leave a Review\" command, or turn the automatic invite off here. No prompt content or credentials are ever sent."},"powerClaude.telemetry.enabled":{"type":"boolean","default":true,"description":"Send anonymized event telemetry to Power Claude so we can debug issues you report. No prompt content, no credentials, no file paths — events pass through a sanitizer that redacts API keys, OAuth tokens, JWTs, emails, phone numbers, home-directory paths, and any string matching prompt-injection patterns. Requires a configured endpoint below."},"powerClaude.telemetry.endpoint":{"type":"string","default":"https://neural-llm.com/api/telemetry","description":"HTTPS endpoint that receives sanitized telemetry batches. Leave blank to disable transport even if the toggle above is on."},"powerClaude.telemetry.minLevel":{"type":"string","enum":["debug","info","warn","error"],"default":"warn","description":"Minimum event severity to capture for telemetry. 'warn' = only warnings + errors, 'error' = errors only. Higher (debug) captures more; lower (error) captures less."},"powerClaude.logLevel":{"type":"string","enum":["trace","debug","verbose","info","warn","error"],"enumDescriptions":["TRACE — every poll/heartbeat tick (auto-resume probes, sub-second loops). Highest volume; for diagnosing 'is this code path even running'.","DEBUG — granular execution path tracing (state-change ticks, decision branches). Off in normal use; on while reproducing a bug.","VERBOSE — extended state mutations and intermediate steps; quieter than DEBUG, noisier than INFO.","Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","WARN — recoverable issues (fallback used, throttle deferred, file not found).","ERROR — failures that impact functionality."],"default":"info","description":"Verbosity of the extension's local diagnostic output channel and rate-limit handler logs. 'debug' is the most verbose — recommended when reproducing an issue. The extension writes the chosen level to ~/.power-claude/config/ so the rate-limit handler shell scripts can pick it up at runtime."},"powerClaude.logExport.outputDir":{"type":"string","default":"","description":"Default directory for 'Power Claude: Export Logs (Sanitized)'. Leave blank to be prompted each time."},"powerClaude.logExport.includeRateLimitLogs":{"type":"boolean","default":true,"description":"Include ~/.power-claude/logs/*.log and events.jsonl in the exported bundle (sanitized)."},"powerClaude.logExport.includeHandlerLogs":{"type":"boolean","default":true,"description":"Include the rate-limit handler decision-trail and combined logs in the exported bundle (sanitized)."},"powerClaude.watchdog.enabled":{"type":"boolean","default":true,"description":"Enable the session-resilience watchdog. When ON, Power Claude polls active sessions every 30s and detects deaths that the rate-limit recovery system can't see (process kill, OOM, IDE crash, network drop mid-tool, sessions ended with task items still pending) and silently auto-resumes. Requires lifecycle hooks to be installed for heartbeat baselines."},"powerClaude.watchdog.heartbeatStaleSec":{"type":"number","default":120,"minimum":30,"description":"Heartbeat-stale threshold in seconds. The watchdog fires when no `lifecycle:heartbeat` record has appeared in this many seconds AND the session's JSONL has been idle for the same period. Lifecycle hooks at ~/.power-claude/hooks/lifecycle/heartbeat.sh (PostToolUse) write these markers. Lower = faster detection but more false-positives on long-running tools."},"powerClaude.watchdog.toolTruncationStaleSec":{"type":"number","default":60,"minimum":10,"description":"Tool-truncation threshold in seconds. The watchdog fires when the most recent assistant record has stop_reason=tool_use AND no follow-up tool_result user record has arrived within this many seconds. Catches network drops and process kills that occurred mid-tool-call."},"powerClaude.watchdog.flagIncompleteOnStop":{"type":"boolean","default":true,"description":"When ON, flag sessions that ended cleanly via the Stop hook BUT left task items in pending or in_progress status. The Sessions UI surfaces these with a yellow badge and the watchdog offers (but does not silently auto-resume) a recovery QuickPick — these are intentional pauses, not deaths. Turn OFF to ignore unfinished-task signals on cleanly-stopped sessions."},"powerClaude.watchdog.maxResumeAgeHours":{"type":"number","default":24,"minimum":1,"description":"Max session age (hours) for watchdog auto-resume. Sessions older than this are skipped — the user has likely moved on. Default 24h covers overnight gaps; raise if you want week-old sessions to still be recoverable."},"powerClaude.watchdog.pollIntervalSec":{"type":"number","default":30,"minimum":10,"maximum":300,"description":"How often (seconds) the watchdog scans active sessions for deaths. Lower = faster crash detection at slightly more CPU per scan; higher = laxer detection. Clamped to 10–300s. Default 30s. Takes effect immediately on change (the watchdog is rebuilt with the new interval)."},"powerClaude.watchdog.compactThrashAutoRecover":{"type":"boolean","default":true,"description":"When ON (the default), the watchdog automatically recovers sessions that hit Claude Code's \"Autocompact is thrashing\" failure mode by running the Context Trim + Fresh Resume strategy: it exports a trimmed summary (where you were, unfinished to-dos, files touched) and opens a fresh Claude session in a terminal seeded with it. A naive --resume just re-thrashes, so this is the only correct recovery path. This recovery is independent of the `powerClaude.devMode.autoOpenSessions` gate (that gate governs bulk session re-opening, which can open workspace tabs; thrash recovery opens a focus-preserving terminal in the current directory and is a distinct, fault-confirmed, single-session path). Turn OFF to instead get a notification with a one-click \"Recover now\" action when a thrash is detected."},"powerClaude.autoNudge.enabled":{"type":"boolean","default":true,"description":"Auto-Resume Nudges (Pro). When ON, the Stop hook scans the model's last message and automatically re-issues the turn if it stopped for a 'trivial' reason — asking permission to continue, offering a multi-choice menu when one option is obvious, telling YOU to run a command Claude could run itself, etc. Each individual nudge is a separate toggle below. A hard-stop veto list ensures genuine blockers (auth failure, missing credential, approval gate) always stop. Requires Power Mode."},"powerClaude.autoNudge.loopGuardMax":{"type":"number","default":3,"minimum":1,"maximum":10,"description":"Max consecutive auto-nudges per session before the loop guard lets the next Stop be a real stop. Prevents Claude+nudge from ping-ponging on a stubborn pattern. Default 3 — covers the common 'asked permission three times' tic without letting a misfire loop forever."},"powerClaude.autoNudge.shadowMode":{"type":"boolean","default":false,"description":"Shadow mode — log every would-fire decision to ~/.power-claude/logs/events.jsonl but do NOT actually resume. Use this for a week before flipping enabled=true to audit which nudges fire and tune your toggles."},"powerClaude.autoNudge.brandBadge":{"type":"boolean","default":true,"description":"Brand the auto-resume notice in the VS Code chat. When Power Claude auto-resumes a stopped turn it posts a '⚡ Power Claude auto-resumed this turn' line; with this on, the webview upgrades that line to the Power Claude bolt-logo badge with a purple accent so the resume is attributable at a glance. Off = the plain ⚡ text line only (still shown in the CLI). Secondary kill switch: localStorage['pc-feature-autoresume-badge']='0' in the webview."},"powerClaude.sessionRestore.extendNativeTtl":{"type":"boolean","default":true,"description":"Keep a reopened Claude tab bound to its previous session. Claude Code's native tab restore silently discards the tab's saved session when it is more than 10 minutes old and opens a brand-new empty session instead — which is exactly what happens after a slow reload or under heavy system load. With this on, Power Claude extends that native restore window to 7 days so a previously-open tab reliably comes back with the session it had. Off = revert to the stock 10-minute window."},"powerClaude.autoNudge.objectiveMode":{"type":"boolean","default":true,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoNudge.aggressiveness":{"type":"string","enum":["conservative","balanced","aggressive"],"default":"balanced","enumDescriptions":["Never auto-resume on a deterministic signal alone — every would-continue is confirmed by the triage model first. Safest, most model calls (~14% of stops).","Clean trivial continuations resume deterministically (no model); only genuinely mixed remaining-lists escalate to item-level triage (~4% of stops). Recommended.","Trusts the deterministic gate most — a trailing question alone no longer forces an escalation, so more stops resume without a model call (~3% of stops)."],"description":"How readily Auto-Resume continues a stopped turn. The deterministic tier engine (@hurc/stop-classifier) decides park / continue / escalate; this dial sets where the continue↔escalate boundary sits. The triage model is only consulted on 'escalate'."},"powerClaude.autoNudge.nudges":{"type":"object","description":"Per-nudge on/off toggles. Each key matches an entry in ~/.power-claude/config/nudges.json. Defaults: 6 ON (high-confidence patterns, the two Haiku-confirmed ones included), 4 OFF (opt-in for the more aggressive ones).","default":{"ask-permission-to-continue":true,"offer-multi-choice":true,"tell-user-to-do-work":true,"pseudo-checkpoint":true,"promised-continuation":true,"complete-remaining-tasks":true,"multi-session-defer":false,"ask-to-verify":false,"sample-instead-of-all":false,"restate-then-stop":false},"properties":{"ask-permission-to-continue":{"type":"boolean","description":"Detect 'Want me to continue?' / 'Should I keep going?' — re-inject 'Continue. Don't ask permission for obvious next steps.'"},"offer-multi-choice":{"type":"boolean","description":"Detect 'Three reasonable next moves — 1) … 2) … 3) … which?' — re-inject 'Pick the most obvious option and proceed.'"},"tell-user-to-do-work":{"type":"boolean","description":"Detect 'You can run X to verify' / 'You'll need to deploy this' — re-inject 'You have the tools to do this yourself. Don't delegate execution back to the user.'"},"pseudo-checkpoint":{"type":"boolean","description":"Detect 'Good stopping point' / 'Let's pause here' without a real reason — re-inject 'Continue to the next concrete deliverable.'"},"multi-session-defer":{"type":"boolean","description":"Detect 'This is multi-session work — let's pick this up next time' — re-inject 'Don't preemptively defer to a future session.'"},"ask-to-verify":{"type":"boolean","description":"Detect 'Want me to take a screenshot to verify?' when verifying is the obvious next step — re-inject 'Just verify; don't ask first.'"},"sample-instead-of-all":{"type":"boolean","description":"Detect 'Should I do this for the first 5, or all of them?' when 'all' is obviously correct — re-inject 'Apply to the whole set.'"},"restate-then-stop":{"type":"boolean","description":"Detect long 'here's where we are' restatement followed by a stalling question — re-inject 'Don't summarize state as a stalling tactic.'"},"promised-continuation":{"type":"boolean","description":"Detect 'I'll continue this automatically once X finishes' / 'I'll resume when …' — the agent promised to keep going but ended its turn. ON by default; confirmed by a fast Haiku call before resuming (the veto layer already catches 'once you've verified'-style waits on the user). Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."},"complete-remaining-tasks":{"type":"boolean","description":"Detect 'Remaining tasks/sequence/plan: …' / 'Next steps: …' / 'the rest of the …' / 'left to do' when the listed work was part of your original request. ON by default; each match is confirmed by a fast Haiku call before resuming, so ambiguous lists don't auto-continue past real decisions. Requires ANTHROPIC_API_KEY in the Stop-hook env — the confirm gate no-ops (never resumes) without it."}}},"powerClaude.autoNudge.fallback.enabled":{"type":"boolean","default":true,"description":"Optional LLM fallback. When ON, and no deterministic nudge pattern matched, call the configured model with a terse classifier prompt to decide whether to resume anyway. On by default — the deterministic catalog covers the high-confidence ~17% of stops; the fallback handles the long tail. NOTE: this calls the configured model (default Haiku 4.5) on stops the catalog didn't match, so it incurs a small per-stop API cost and requires ANTHROPIC_API_KEY in the environment that runs the Stop hook; if no key is present the fallback silently no-ops. Turn OFF to stay purely deterministic at zero extra cost."},"powerClaude.autoNudge.fallback.model":{"type":"string","default":"claude-haiku-4-5-20251001","description":"Model used for the optional LLM fallback classifier. Haiku 4.5 is the default — cheapest, fastest, adequate for a binary trivial-vs-real classification. Bump to a stronger model if you see the fallback over-firing or missing cases."},"powerClaude.autoNudge.fallback.effort":{"type":"string","default":"fast","enum":["fast","balanced","thorough"],"description":"Effort budget for the LLM fallback. 'fast' caps the response at ~128 tokens; 'thorough' raises to ~256 and is recommended only when shadowMode tells you fast misclassifies."},"powerClaude.autoNudge.featureDiscovery.enabled":{"type":"boolean","default":true,"description":"Suggest enabling off-by-default Auto-Resume nudges after Power Claude observes they would have helped. When a disabled nudge with a shadow-on-disable flag matches N times within the rolling window, a one-shot toast offers Enable / Not now / Don't ask again."},"powerClaude.autoNudge.featureDiscovery.threshold":{"type":"number","default":3,"minimum":1,"maximum":20,"description":"How many would-have-fired observations of the same nudge must accrue within the window before the discovery toast appears."},"powerClaude.autoNudge.featureDiscovery.windowDays":{"type":"number","default":14,"minimum":1,"maximum":90,"description":"Rolling window in days over which would-have-fired observations are counted toward the discovery threshold."},"powerClaude.proxy.autoStart":{"type":"boolean","default":false,"description":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy).","markdownDescription":"When ON, auto-start the legacy rotation proxy. Public default is OFF — official-cli transport does not use the proxy. Only enable for internal legacy-proxy builds (POWER_CLAUDE_TRANSPORT=legacy-proxy)."},"powerClaude.setup.autoEnableBackgroundServices":{"type":"boolean","default":true,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.hideFallbackBanner":{"type":"boolean","default":false,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.port":{"type":"number","default":3456,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.switchThreshold":{"type":"number","default":0.98,"minimum":0,"maximum":1,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.pinnedAccounts":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.proxy.pinnedTiers":{"type":"array","items":{"type":"string"},"default":[],"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: 🔄 Auto-Rewake","order":3,"properties":{"powerClaude.autoRewake.stuckThresholdAttempts":{"type":"number","default":30,"minimum":5,"maximum":500,"order":1,"description":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops. Range: 5–500. The bash hook reads this from ~/.power-claude/config/auto-rewake-config.json, which the extension auto-derives from this VS Code setting on every change.","markdownDescription":"Number of consecutive rewake attempts with the same reset-at timestamp before the auto-rewake hook declares itself stuck and stops.\n\n- Range: **5–500** (default `30`).\n- The bash hook reads this from `~/.power-claude/config/auto-rewake-config.json`, which the extension auto-derives from this VS Code setting on every change.\n- VS Code Settings is the single source of truth. The JSON file is a derived cache and should never be hand-edited."},"powerClaude.autoRewake.stalenessBannerSeconds":{"type":"number","default":60,"minimum":30,"maximum":600,"order":2,"description":"Seconds after a rate-limit event before the dashboard shows a staleness banner. Range: 30–600.","markdownDescription":"Seconds after a rate-limit event before the dashboard shows a staleness banner.\n\n- Range: **30–600** (default `60`)."},"powerClaude.autoRewake.preferPremiumAccounts":{"type":"boolean","default":true,"order":3,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoRewake.deferredRewakeMechanism":{"type":"string","enum":["systemd-run"],"default":"systemd-run","order":4,"description":"The mechanism used to schedule deferred rewakes after all accounts are cooling. Only systemd-run is supported today.","markdownDescription":"The mechanism used to schedule deferred rewakes after all accounts are cooling.\n\n- `systemd-run` *(default, only supported value today)*"},"powerClaude.autoRewake.userExtras.default":{"type":"string","default":"","order":5,"description":"Context string injected into Claude's wake-up prompt on every rewake, regardless of rate-limit type. Leave blank to skip. Useful for briefing the LLM on what task was in progress.","markdownDescription":"Context string injected into Claude's wake-up prompt on **every** rewake, regardless of rate-limit type. Leave blank to skip.\n\nUseful for briefing the LLM on what task was in progress. Per-type overrides (below) take precedence when the matching rate-limit type fires."},"powerClaude.autoRewake.userExtras.perType.usage-5h":{"type":"string","default":"","order":6,"description":"Override injected on usage-5h rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.usage-weekly":{"type":"string","default":"","order":7,"description":"Override injected on usage-weekly rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error":{"type":"string","default":"","order":8,"description":"Override injected on server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.server-error-escalated":{"type":"string","default":"","order":9,"description":"Override injected on escalated server-error rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.capacity":{"type":"string","default":"","order":10,"description":"Override injected on capacity rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.throttle":{"type":"string","default":"","order":11,"description":"Override injected on throttle rewakes (instead of the default). Leave blank to fall back to the default."},"powerClaude.autoRewake.userExtras.perType.all-accounts-exhausted":{"type":"string","default":"","order":12,"description":"Override injected on all-accounts-exhausted rewakes (instead of the default). Leave blank to fall back to the default."}}},{"title":"Power Claude: Self-Heal","order":98,"properties":{"powerClaude.selfHeal.autoReloadOnBreach":{"type":"boolean","default":false,"order":1,"markdownDescription":"**Auto-reload the VS Code window when a sustained extension-host memory breach is detected.**\n\nWhen `false` (default): a non-blocking warning toast appears with a **Reload Window** button — you choose when to reload.\n\nWhen `true`: after a configurable grace period (`selfHeal.autoReloadGraceSec`), the window reloads automatically without further input. This is aggressive: any unsaved work in the editor buffer will be restored by VS Code, but terminal sessions are interrupted.\n\nUseful on long-running shared dev servers where the 71 GB extension-host scenario needs automated recovery without anyone at the keyboard. Leave `false` for interactive use."},"powerClaude.selfHeal.autoReloadGraceSec":{"type":"number","default":60,"minimum":10,"maximum":300,"order":2,"description":"Seconds to wait after a sustained memory breach is detected before auto-reloading the window. Only takes effect when powerClaude.selfHeal.autoReloadOnBreach is true. Minimum 10s (gives you time to cancel). Default: 60s."}}},{"title":"Power Claude: ⚡ Auto-Tuning & Calibration","order":7,"properties":{"powerClaude.calibration.enabled":{"type":"boolean","default":true,"order":1,"description":"Interactive calibration — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you. Turn this OFF to stop all calibration interviews instantly. (The global `pc emergency off` kill switch also disables it.)","markdownDescription":"**Interactive calibration** — let Power Claude learn your preferences over time with a short, occasional interview (at most one prompt per session-end) and set the matching setting for you.\n\nTurn this **off** to stop all calibration interviews instantly. Per-setting toggles live below. The global `pc emergency off` kill switch also disables it."},"powerClaude.calibration.autoNudge.aggressiveness.enabled":{"type":"boolean","default":true,"order":2,"description":"Calibrate the auto-resume / auto-nudge eagerness (powerClaude.autoNudge.aggressiveness) by interview. Turn off to stop just this one calibration while leaving others on. Only applies when powerClaude.calibration.enabled is true."},"powerClaude.calibration.posture":{"type":"string","enum":["gentle","medium","precise"],"enumDescriptions":["Ask me the least — set the value as soon as there's a rough signal (lower confidence).","Ask a few times — a balance of accuracy and interruptions (recommended).","Dial it in — keep asking until highly confident before setting the value."],"default":"medium","order":3,"description":"How precisely calibration should learn before it sets a value — i.e. how many interviews it needs. gentle = fewest prompts, precise = most. Default: medium."},"powerClaude.jitSetup.enabled":{"type":"boolean","default":true,"order":4,"description":"Just-in-time setup offers — when a Power Claude feature would first help, show a one-time, dismissible offer to enable/configure it (instead of hunting through Settings). 'Not now' is re-offered later; 'Don't ask again' suppresses it. Turn this off to never see first-run offers; per-feature offers can be disabled with powerClaude.jitSetup.<feature>.enabled."}}},{"title":"Power Claude: Developer","order":98,"properties":{"powerClaude.dev.autoReloadOnInstall":{"type":"boolean","default":false,"order":1,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.autoActivateOnInstall":{"type":"boolean","default":true,"order":2,"markdownDescription":"When a newer Power Claude build is installed into this editor (marketplace update, VSIX, or local install), automatically activate it: on desktop VS Code restart the Extension Host; on code-server / web show a clear notice (those hosts cannot hot-load). Default ON so the dashboard version does not stay stuck on the old build until a full window reload. Turn OFF to require a manual reload only. Always verifies a prior hot-activate attempt so a failed update is never silent."},"powerClaude.devMode.allowDevHosts":{"type":"boolean","default":false,"order":50,"description":"DEV LAB: multi-host Profiles (Claude/Grok/Codex/Gemini tabs + host account store). When ON, enables the lab for this window (sets POWER_CLAUDE_ALLOW_DEV_HOSTS + FORCE). Shows Grok/Codex/Gemini under Your Profiles. Never enable for public Marketplace customers."}}},{"title":"Power Claude: Fail-Open Shim (v2 routing chokepoint — experimental)","order":98,"properties":{"powerClaude.failOpenShim.enabled":{"type":"boolean","default":false,"order":1,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Detached Sessions (experimental — Pro)","order":97,"properties":{"powerClaude.detachedSessions.enabled":{"type":"boolean","default":false,"order":1,"description":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation.","markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."},"powerClaude.detachedSessions.turnTimeoutMinutes":{"type":"number","default":60,"minimum":5,"maximum":360,"order":2,"description":"Hard ceiling (systemd RuntimeMaxSec) for a single detached turn. systemd self-kills the turn if it runs longer, bounding worst-case spend if you never come back. Default: 60 minutes."},"powerClaude.detachedSessions.idleReapMinutes":{"type":"number","default":30,"minimum":5,"maximum":240,"order":3,"description":"The background watchdog stops a detached session that has produced no output for this long, so an abandoned turn can't sit idle holding an account. Default: 30 minutes."},"powerClaude.detachedSessions.maxConcurrent":{"type":"number","default":1,"minimum":1,"order":4,"markdownDescription":"Legacy / internal only. Unused when transport is official-cli (public default). Public builds use official Claude Code transport and Claude Code profiles — not consumer-account pooling or automatic credential rotation."}}},{"title":"Power Claude: Update Notifier","order":99,"properties":{"powerClaude.updateNotifier.enabled":{"type":"boolean","default":true,"order":1,"description":"Check once per day for newer Power Claude releases and show a non-blocking toast when behind. Disable to silence both the toast and the CLI banner. The check polls https://neural-llm.com/api/v1/power-claude/manifest.json once per 24h and caches the result in ~/.power-claude/cache/update-check.json. Setting the POWER_CLAUDE_NO_UPDATE_CHECK=1 environment variable overrides this setting on both the extension and CLI."}}},{"title":"Power Claude: 🩹 Session Actions","order":60,"properties":{"powerClaude.sessionActions.enabled":{"type":"boolean","default":true,"order":1,"markdownDescription":"Master switch for **Session Actions** — PC-branded recovery actions (Heal, Unstick, Revive, Re-run tool, Finish tasks, Resume, Repair turn) surfaced when a session is stuck or failed. They appear inline on the offending chat line, in the session list, in the `Power Claude: Session Actions` command, and via `pc session action` on the CLI. Turn off to hide every surface and stop the intent watcher from acting. See `docs/features/session/actions.md`."},"powerClaude.sessionActions.heal.enabled":{"type":"boolean","default":true,"order":10,"description":"Show the Heal action (trim & resume) on context-overflow / compaction-thrash sessions — i.e. when a turn fails with \"Prompt is too long\"."},"powerClaude.sessionActions.heal.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":11,"description":"Recovery strategy the Heal action runs. Empty = the action's default (context-trim-resume)."},"powerClaude.sessionActions.unstick.enabled":{"type":"boolean","default":true,"order":20,"description":"Show the Unstick action (fork from the last good checkpoint) on sessions caught in a repeating tool loop."},"powerClaude.sessionActions.unstick.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":21,"description":"Recovery strategy the Unstick action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.revive.enabled":{"type":"boolean","default":true,"order":30,"description":"Show the Revive action (fork from checkpoint) on crashed / abandoned sessions."},"powerClaude.sessionActions.revive.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":31,"description":"Recovery strategy the Revive action runs. Empty = the action's default (fork-from-checkpoint)."},"powerClaude.sessionActions.rerunTool.enabled":{"type":"boolean","default":true,"order":40,"description":"Show the Re-run tool action on sessions whose last turn was truncated mid tool-call."},"powerClaude.sessionActions.rerunTool.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":41,"description":"Recovery strategy the Re-run tool action runs. Empty = the action's default (tool-rerun)."},"powerClaude.sessionActions.finishTasks.enabled":{"type":"boolean","default":true,"order":50,"description":"Show the Finish tasks action (resume + inject pending TODOs) on sessions that ended with unfinished plan items."},"powerClaude.sessionActions.finishTasks.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":51,"description":"Recovery strategy the Finish tasks action runs. Empty = the action's default (pending-task-injection)."},"powerClaude.sessionActions.resume.enabled":{"type":"boolean","default":true,"order":60,"description":"Show the Resume action on sessions that went idle (stale heartbeat) or are stuck after a rate-limit window."},"powerClaude.sessionActions.resume.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":61,"description":"Recovery strategy the Resume action runs. Empty = the action's default (naive-resume)."},"powerClaude.sessionActions.repairTurn.enabled":{"type":"boolean","default":true,"order":70,"description":"Show the Repair turn action on sessions wedged by an orphaned/modified thinking turn (HTTP 400 on resume)."},"powerClaude.sessionActions.repairTurn.strategy":{"type":"string","default":"","enum":["","context-trim-resume","fork-from-checkpoint","tool-rerun","pending-task-injection","naive-resume","orphaned-turn-trim","manual-export"],"order":71,"description":"Recovery strategy the Repair turn action runs. Empty = the action's default (orphaned-turn-trim)."}}},{"title":"Power Claude: ⚡ Wake Actuator","properties":{"powerClaude.wakeActuator.enabled":{"type":"boolean","default":false,"order":1,"description":"⚡ Power Claude Wake Actuator — when enabled, Power Claude proactively resumes a parked session when a teammate or another session sends it a cross-session message via the harness bus. The wake actuator watches ~/.hurc-harness/state/session/messaging/.wake/requests/ and re-invokes the session via the Claude Code editor API. Gated by leader election (only one window actuates per event), per-target cooldown (30s), msgId dedup (persisted across restarts), and chainDepth cap. Honors the emergency-off sentinel. Default OFF for v1 (opt-in); enable alongside the harness cross-session messaging feature.","markdownDescription":"**⚡ Power Claude Wake Actuator** — proactively resume a parked session when it receives a cross-session message.\n\n- Watches the harness wake-request directory and re-invokes the target session via the Claude Code editor API.\n- **Safety**: leader-elected (one window actuates per event), per-target 30s cooldown, restart-safe msgId dedup, chainDepth cap, emergency-off honored.\n- **Default OFF** for v1 — enable once you are using the harness cross-session messaging feature (`pc msg send`).\n- The resume prompt is always the constant *\"Continue from where you left off.\"* — never read from the message payload."},"powerClaude.wakeActuator.pollIntervalMs":{"type":"number","default":8000,"minimum":1000,"maximum":60000,"order":2,"description":"How often (ms) the wake actuator polls the wake-request directory as a fallback when fs.watch events are not reliable (WSL2, NFS, Docker bind mounts). Default 8000ms. The fs.watch watcher runs unconditionally alongside this poll."}}},{"title":"Power Claude: ⚡ Inbound Messages","properties":{"powerClaude.inboundMessages.enabled":{"type":"boolean","default":true,"order":1,"feature":"pc-inbound-messages","description":"⚡ Power Claude Inbound Messages — when enabled, Power Claude watches the harness inbox for sessions open in this window. Cross-session messages are AI-agent-to-AI-agent traffic delivered invisibly into the receiving session's model context by the harness; nothing opens automatically for the human. The ⚡ Power Claude Messages panel is available on demand (Command Palette: 'Power Claude: Show Inbound Messages') and shows the full message history (sender, subject, body, timestamp). All message content is treated as untrusted and HTML-escaped before display; enableScripts is false.","markdownDescription":"**⚡ Power Claude Inbound Messages** — track cross-session AI-agent messages without interrupting the human.\n\n- Watches `inbox/<sessionId>.jsonl` for each session open in this window.\n- These messages are agent-to-agent: the harness already delivers them invisibly into the receiving session's own model context. Nothing is surfaced to the human automatically — no auto-opened tab, no status-bar cue.\n- Open the **branded ⚡ Power Claude panel** on demand via the Command Palette (`Power Claude: Show Inbound Messages`) to review the full message history (sender, kind, timestamp, body) and reply.\n- **Security**: all peer message text is HTML-escaped; the webview runs with `enableScripts: false`.\n- Enable `powerClaude.inboundMessages.showToast` if you want an explicit opt-in toast notification when a message arrives.\n- Default **ON** (governs whether the watcher runs at all — it has no automatic human-facing effect either way)."},"powerClaude.inboundMessages.showToast":{"type":"boolean","default":false,"order":2,"feature":"pc-inbound-messages","description":"When true, show an opt-in VS Code toast when a cross-session message arrives, with a 'Show' action that opens the ⚡ Power Claude Messages panel. Default false — cross-session messages are AI-agent-to-AI-agent traffic and nothing is surfaced to the human by default. Enable this only if you personally want to be notified of arrivals."},"powerClaude.ui.showClassicHome":{"type":"boolean","default":false,"markdownDescription":"**Show Classic Home** under the **Power** sidebar (opt-in). Default **OFF** — primary is single **Home** (products switch inside).","description":"When ON, show Home · Classic for side-by-side compare. Default ON for live customers."},"powerClaude.ui.showView2Home":{"type":"boolean","default":false,"markdownDescription":"**Show Home · View 2.0** for local compare only. **Default OFF** for live customers. Primary is **Home · New**; **Home · Classic** stays available.","description":"When ON, contribute Home · View 2.0 (dev/compare only). Default OFF for live customers."}}}],"keybindings":[{"command":"powerClaude.searchSessions","key":"ctrl+alt+s","mac":"cmd+alt+s","when":"workbenchState != empty"},{"command":"powerClaude.searchOpenTabsQuickPick","key":"ctrl+alt+shift+s","mac":"cmd+alt+shift+s","when":"workbenchState != empty"}]},"scripts":{"postinstall":"node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');const steps=['scripts/release/merge-drivers/register.sh','scripts/release/install-bypass-guard.sh'];for (const s of steps){if(!existsSync(s))continue;const r=spawnSync('bash',[s],{stdio:'inherit'});if(s.includes('register')&&r.status)process.exit(r.status??0);}process.exit(0)\"","prepublishOnly":"bash scripts/release/gate/prepublish-npm.sh","vscode:prepublish":"bash scripts/release/prepublish.sh","validate:settings":"if [ -f ../hurc-harness/tools/settings-docs/validate.mjs ]; then node ../hurc-harness/tools/settings-docs/validate.mjs --package package.json --min 40; else echo 'WARN: hurc-harness settings validator missing — skipping settings-docs gate'; fi","docs:settings":"if [ -f ../hurc-harness/tools/settings-docs/generate.mjs ]; then node ../hurc-harness/tools/settings-docs/generate.mjs --package package.json --title \"Power Claude\" --out-md docs/settings/reference.md --out-json docs/settings/reference.json; else echo 'WARN: hurc-harness settings doc generator missing — skipping'; fi","test:prepublish":"node scripts/release/run-vitest-prepublish.mjs","test:prepublish:raw":"vitest run --reporter=basic --no-coverage --config=vitest.config.prepublish.ts","test:replay":"bash test/replay/run-replay-suite.sh","test:messaging":"bash test/messaging/roundtrip.sh","compile":"tsc -p ./ --noEmit","vscode:uninstall":"node ./out/uninstall-hook.js","inject:version":"bash scripts/build/inject-version.sh","vendor:sync":"bash scripts/vendor/sync-token-engines.sh && bash scripts/vendor/sync-jq.sh","sync:media":"node scripts/build/sync-media.mjs --src node_modules/@cj-hurc/webview-ui/static --dest media --prefix pc","sync:flow-explorer":"node scripts/build/sync-flow-explorer.mjs","deps:refresh-internal":"node scripts/build/refresh-internal-deps.mjs","gen:readme":"node scripts/build/install-channels.mjs --write","gen:savings":"node scripts/build/savings-model.mjs --write","check:savings":"node scripts/build/savings-model.mjs --check","build":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","build:dev":"npm run deps:refresh-internal && npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && PC_DEV_BUILD=1 node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","build:prod":"npm run inject:version && npm run gen:readme && npm run gen:savings && npm run vendor:sync && npm run sync:media && npm run sync:flow-explorer && NODE_ENV=production node esbuild.config.mjs && node scripts/build/emit-cli-manifest.mjs && node scripts/build/emit-system-index.mjs","watch":"npm run inject:version && node esbuild.config.mjs --watch","emit:cli-manifest":"node scripts/build/emit-cli-manifest.mjs","emit:onboarding":"node scripts/build/emit-onboarding.mjs","check:onboarding":"node scripts/build/emit-onboarding.mjs --check","emit:system-index":"node scripts/build/emit-system-index.mjs","check:system-index":"node scripts/build/emit-system-index.mjs --check","protect":"node scripts/build/protect.js","embed:key":"node scripts/build/embed-public-key.js","pack:engine":"node scripts/build/pack-runtime-shell.mjs","embed:engine-key":"node scripts/build/embed-engine-key.js","verify:protected":"node scripts/build/verify-protected.js","register:hashes":"node scripts/build/register-code-hashes.mjs","build:protected":"npm run build:prod && npm run protect && npm run embed:key && npm run pack:engine && npm run embed:engine-key && npm run verify:protected","package":"bash scripts/release/vsix/package.sh","package:dev":"bash scripts/build/package-dev.sh","install:vscode":"bash scripts/release/install-local-prod.sh dist/power-claude-$npm_package_version.vsix","install:cursor":"cursor --install-extension dist/power-claude-$npm_package_version.vsix --force","install:code-server":"code-server --install-extension \"$(pwd)/dist/power-claude-$npm_package_version.vsix\" --force","deploy":"npm run package && npm run install:vscode","deploy:cursor":"npm run package && npm run install:cursor","deploy:code-server":"npm run package && npm run install:code-server","deploy:all":"npm run package && npm run install:vscode; npm run install:code-server","//build-unify":"package:both produces BOTH the prod and the dev .vsix in one run. CRITICAL ORDERING: build:dev MUST run before package:dev — package:dev (PC_SKIP_PREPUBLISH=1) only re-packs the CURRENT out/, so without a preceding build:dev it ships whatever out/ holds (e.g. a prod/__PC_DEV__=false bundle) under a -dev FILENAME → isDevBuild() reports PROD, no dev-unlock. `npm run package` rebuilds out/ as prod (prepublish), then build:dev rebuilds it as dev (PC_DEV_BUILD=1 → __PC_DEV__=true), then package:dev packs that.","package:both":"npm run package && npm run build:dev && npm run package:dev","install:dev":"code --install-extension dist/power-claude-$npm_package_version-dev.vsix --force","deploy:both":"npm run package:both && npm run install:dev","smoke:proxy":"npx ts-node --esm src/proxy/smoke.ts","release:check":"scripts/release/pre-publish-check.sh","release:version-check":"scripts/release/version/check.sh","release:bump":"scripts/release/bump.sh","release:bump:tag":"scripts/release/bump.sh --tag","release:dry-run":"scripts/release/bump.sh --dry-run","sync:public":"scripts/release/sync-public.sh","sync:public:push":"scripts/release/sync-public.sh --push","test":"vitest run","verify":"bash scripts/verify/run.sh","verify:invariants":"bash scripts/verify/run.sh --invariants-only","dedup":"tsx devtools/dedup/similarity.ts --threshold 0.6 --min-stmts 2","dedup:check":"node devtools/dedup/check.mjs","test:workflow":"vitest run --config vitest.config.workflow.ts","test:all":"npm run test && npm run test:workflow && npm run test:replay && npm run test:messaging","test:watch":"vitest","test:coverage":"vitest run --coverage","test:mock":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:upstream":"vitest run src/engine/v2/e2e/mockUpstream.test.ts --no-coverage","test:e2e":"POWER_CLAUDE_E2E=1 vitest run src/engine/v2/e2e test/proxy/e2e --no-coverage --reporter=basic","test:install:multi-editor":"bash scripts/release/e2e-multi-editor-install.sh","lint:mirror":"node scripts/build/mirror-lint.mjs","test:integration":"npm run compile:tests && node out-tests/integration/runTest.js","test:ui":"npm run compile:tests && extest setup-and-run -e .extest -i out-tests/ui/**/*.test.js -u out/extension.js","test:workflow:shell":"bats test/workflow/shell/ --recursive","compile:tests":"tsc -p test/tsconfig.json","lint:js":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --pass-on-unpruned-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","lint:js:prune":"eslint --config configs/eslint/eslint.config.cjs --no-error-on-unmatched-pattern --prune-suppressions 'media/dashboard.js' 'media/enhancements/dashboard.js' 'media/tooltip.js'","lint:css":"stylelint --config configs/stylelint/stylelint.config.cjs 'media/dashboard.css' 'media/enhancements/dashboard.css' 'media/tooltip.css' 'media/brand/power-claude/badge.css' --allow-empty-input","test:quality":"node scripts/quality/test-quality-engine/selftest.mjs && node scripts/quality/test-quality-engine/scan.mjs --scope official","test:quality:scan":"node scripts/quality/test-quality-engine/scan.mjs --scope all","verify:cross-product":"bash scripts/verify/no-cross-product-hardcoding.sh","e2e:gateway-peer":"bash scripts/verify/e2e-gateway-peer-shell.sh","test:workflow-platform":"vitest run src/shared/workflowPlatform src/shared/session/flow src/shared/trace/loadSpanIntegrity.test.ts src/cli/commands/workflow src/cli/commands/tree.test.ts test/playwright-harness","test:integration:xvfb":"xvfb-run -a npm run test:integration","sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh","sandbox:ui:stop":"bash scripts/sandbox/run-ui-sandbox.sh --stop","test:sandbox:ui":"bash scripts/sandbox/run-ui-sandbox.sh --test","test:sandbox:ui:headed":"bash scripts/sandbox/run-ui-sandbox.sh --test --headed","test:sandbox:code-server":"npx vitest run test/sandbox-ui/code/server-real.playwright.test.ts","test:sandbox:install":"bash sandbox/run.sh","test:sandbox:marketplace":"bash scripts/sandbox/extension-ui-matrix.sh","test:sandbox:marketplace:smoke":"bash scripts/sandbox/marketplace-matrix-smoke.sh","test:sandbox:all":"npm run test:sandbox:ui && npm run test:workflow-platform && npm run test:integration:xvfb && npm run test:sandbox:marketplace:smoke","sandbox:flow:fixtures":"node node_modules/vite-node/vite-node.mjs scripts/sandbox/gen-flow-explorer-fixtures.mts","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","test:install:new-machine":"bash scripts/sandbox/install-validate-new-machine.sh","test:unit":"npm run test:prepublish","verify:runtime-context-ui":"bash scripts/verify/runtime-context-ui.sh","test:pc-settings":"vitest run test/unit/settings/pc-settings-claim-effect.test.ts --reporter=verbose","verify:multi-home-install":"bash scripts/verify/multi-home-install-parity.sh --project-dir .","test:mock:auth-dead":"bash test/mock-upstream/prove/auth-dead-multi-session.bash-test.sh && vitest run test/mock-upstream/oauth-auth-dead.prove.test.ts --no-coverage","test:mock:prove":"npm run test:mock && npm run test:mock:auth-dead","package:sku":"bash scripts/build/package-sku-public.sh --product-id","package:sku:dev":"bash scripts/build/package-sku-dev.sh --product-id","package:sku:public":"bash scripts/build/package-sku-public.sh --product-id"},"devDependencies":{"@cj-hurc/brand-stamp":"^0.1.1","@cj-hurc/calibration":"^0.1.0","@cj-hurc/cli":"^0.1.1","@cj-hurc/context-optimize":"^0.2.0","@cj-hurc/css-primitives-core":"^0.1.0","@cj-hurc/css-primitives-ui":"^0.1.0","@cj-hurc/css-tokens":"^0.1.0","@cj-hurc/dom":"^0.1.1","@cj-hurc/eslint-plugin":"^0.2.0","@cj-hurc/format":"^0.1.0","@cj-hurc/hot-install":"^0.2.0","@cj-hurc/js-core":"^0.1.1","@cj-hurc/js-primitives":"^0.1.1","@cj-hurc/log-marker":"^0.1.0","@cj-hurc/modal":"^0.1.1","@cj-hurc/qa-core":"^0.1.0","@cj-hurc/qa-fixtures":"^0.1.1","@cj-hurc/release-tools":"^0.1.0","@cj-hurc/session":"^0.1.0","@cj-hurc/shell-runner":"^0.1.0","@cj-hurc/similarity":"^0.1.0","@cj-hurc/stats":"^0.1.0","@cj-hurc/statusline-core":"^0.1.1","@cj-hurc/stop-classifier":"^0.1.2","@cj-hurc/stylelint-plugin":"^0.2.0","@cj-hurc/update-notifier":"^0.1.1","@cj-hurc/vscode-adapter":"^0.3.5","@cj-hurc/webview-ui":"^0.3.1","@resvg/resvg-js":"^2.6.2","@types/chai":"^4.3.11","@types/glob":"^8.1.0","@types/mocha":"^10.0.6","@types/node":"^20.0.0","@types/vscode":"^1.80.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^1.6.0","@vscode/test-cli":"^0.0.10","@vscode/test-electron":"^2.4.1","@vscode/vsce":"2.22.0","chai":"^4.4.1","esbuild":"^0.21.0","eslint":"^9.0.0","glob":"^10.3.10","javascript-obfuscator":"^4.2.2","mocha":"^10.7.3","stylelint":"^16.0.0","typescript":"^5.3.0","vitest":"^1.6.0","vscode-extension-tester":"^8.7.0"},"dependencies":{},"_id":"power-claude@3.0.138","gitHead":"904433ae2eb64cdb53fddab50808ca56846d82d5","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-p0dwnCcXUf6MA6Q0DAHyxzbAEAUwKsygV4ckOe1IcbluZU7JfQ25z1tA8BEs8ExADTUfJpVeE7YESYUw/yihbg==","shasum":"c410bf059d8fa7c9f070000647b198712ae42798","tarball":"https://registry.npmjs.org/power-claude/-/power-claude-3.0.138.tgz","fileCount":64,"unpackedSize":46099708,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAgo6uw/BFrxLMg+iYbV7y4g03J/9KAXiWhkKRbCPX5hAiEA8qdwkJXqgVB8qoCgujjoI+vNABzDaLc2K4FtoYM+18o="}]},"_npmUser":{"name":"cjhurc75","email":"chris@nationaldetailpros.com"},"directories":{},"maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/power-claude_3.0.138_1786600129417_0.6359996320019703"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-20T20:50:11.870Z","modified":"2026-08-13T05:48:50.106Z","3.0.21":"2026-06-20T20:50:12.306Z","3.0.28":"2026-06-23T17:15:14.473Z","3.0.33":"2026-06-26T13:40:42.537Z","3.0.38":"2026-06-28T20:23:15.022Z","3.0.40":"2026-06-29T19:38:34.193Z","3.0.45":"2026-06-30T14:18:12.741Z","3.0.46":"2026-06-30T19:40:52.044Z","3.0.47":"2026-06-30T22:50:11.764Z","3.0.49":"2026-07-01T01:07:19.262Z","3.0.51":"2026-07-01T14:04:11.395Z","3.0.52":"2026-07-01T15:44:09.325Z","3.0.53":"2026-07-01T16:30:38.957Z","3.0.62":"2026-07-02T22:25:30.295Z","3.0.63":"2026-07-02T23:24:57.053Z","3.0.76":"2026-07-10T15:43:43.872Z","3.0.77":"2026-07-10T16:32:23.499Z","3.0.80":"2026-07-11T22:18:32.929Z","3.0.81":"2026-07-13T19:13:58.232Z","3.0.82":"2026-07-13T19:56:05.162Z","3.0.86":"2026-07-14T23:58:09.966Z","3.0.88":"2026-07-15T23:23:42.615Z","3.0.92":"2026-07-16T18:41:05.351Z","3.0.94":"2026-07-19T08:16:21.613Z","3.0.97":"2026-07-19T23:27:14.263Z","3.0.98":"2026-07-20T18:28:28.607Z","3.0.101":"2026-07-21T01:34:02.368Z","3.0.105":"2026-07-22T18:58:40.855Z","3.0.107":"2026-07-28T00:33:50.684Z","3.0.108":"2026-07-28T16:18:42.090Z","3.0.116":"2026-07-31T21:36:51.707Z","3.0.115":"2026-08-04T23:14:40.964Z","3.0.100":"2026-08-04T23:15:31.496Z","3.0.102":"2026-08-04T23:16:38.881Z","3.0.103":"2026-08-04T23:17:44.233Z","3.0.104":"2026-08-04T23:18:51.039Z","3.0.106":"2026-08-04T23:19:56.376Z","3.0.109":"2026-08-04T23:20:12.228Z","3.0.110":"2026-08-04T23:21:19.096Z","3.0.111":"2026-08-04T23:22:26.187Z","3.0.112":"2026-08-04T23:23:33.364Z","3.0.113":"2026-08-04T23:23:51.944Z","3.0.114":"2026-08-04T23:24:59.564Z","3.0.138":"2026-08-13T05:48:49.923Z"},"bugs":{"url":"https://github.com/neural-llm-io/power-claude/issues","email":"support@neural-llm.com"},"author":{"name":"Neural-LLM","email":"support@neural-llm.com","url":"https://neural-llm.com"},"license":"SEE LICENSE IN LICENSE","homepage":"https://neural-llm.com/power-claude","keywords":["claude-code","official-cli","rate-limit","multi-account","auto-resume","session-recovery","account-switcher","usage-limits","claude","anthropic","claude-max","claude-pro","account-rotation","token-saver","cost-tracking","token-analytics","ai-coding-agent","coding-agent","cursor","windsurf","vscode-extension","claude-code-cli","session-resume","rate-limits","429","local-first","worktree","orchestration","ai-productivity","subagent","llm","multi-host","model-tabs","kimi","grok","codex","gemini","multi-model"],"repository":{"type":"git","url":"git+https://github.com/neural-llm-io/power-claude.git"},"description":"Save $115+/mo vs Claude Max. Multi-account & rate-limit relief, auto-resume when you walk away, session recovery + Token Saver. Free 7-day Pro trial.","maintainers":[{"name":"cjhurc75","email":"chris@nationaldetailpros.com"}],"readme":"# Power Claude — Save $115+/mo vs Claude Max\n\n> **Free to install · 7-day Pro trial (no card)** · then paid Pro (no ongoing free tier). VS Code · Cursor · Open VSX · npm.\n\n<!-- savings:hero-hook:start (generated by scripts/build/savings-model.mjs — DO NOT EDIT BY HAND) -->\n### ⚡ Save **$115+/mo** vs Max — and Claude Code that keeps working when you walk away. 5 Pro seats you own match one Max‑20× session ceiling; prove it on **your** stalled sessions in 60 seconds (`pc proof`).\n<!-- savings:hero-hook:end -->\n\n[<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/hero-pays.png\" alt=\"Power Claude pays you back — most Max users never touch their full ceiling. Right-size to the Claude Pro accounts your real usage needs: three Pro seats you own billed annually run about $50/mo (plus ~$10/mo for Power Claude) versus $200/mo for Claude Max 20x — about $140/mo back. Pro is ~17% cheaper billed annually; Health Check recovers stalls when you walk away. Start free.\" width=\"100%\">](https://neural-llm.com/pricing)\n\n<!-- savings:hero-para:start (generated by scripts/build/savings-model.mjs — DO NOT EDIT BY HAND) -->\n> **Save $115+/mo on Claude Code — 5 Pro seats you own equal one Max‑20×'s 5‑hour session token ceiling (~220k) for ~58% less** ($83/mo on annual billing vs $200). **Token Saver** trims wasteful tool-output burn before the official CLI runs. **Claude Health Check** (`pc proof`) scans your local history and recovers unfinished work in about a minute — no license tour first. Multi-seat continuity is **manual by default**; the **Auto-Rotation Engine** is optional, OFF until you opt in after a firm grey-area warning (use at your own risk). Watchdog + same-profile resume keep long jobs alive when you walk away. Here's exactly how. ↓\n<!-- savings:hero-para:end -->\n\n**One problem. One proof.** Claude stops → Power Claude detects → same objective continues → you didn't babysit.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/demo-walk-away.gif\" alt=\"Uncut-style demo: Claude session stalls; Power Claude detects and resumes — minutes of babysitting avoided.\" width=\"100%\">\n\n**Primary CTA:** Install free (7-day Pro trial) → recover your first stalled session in 60 seconds (`pc proof`).\n\n\n```bash\ncode --install-extension neural-llm.power-claude\n```\n\n<!-- install:start (generated from data/install/channels.json by scripts/build/install-channels.mjs — DO NOT EDIT BY HAND) -->\n[![VS Code Marketplace](https://img.shields.io/badge/VS_Code_Marketplace-install-f26522.svg?style=flat-square&logo=visualstudiocode&logoColor=white)](https://marketplace.visualstudio.com/items?itemName=neural-llm.power-claude)\n[![Open VSX](https://img.shields.io/badge/Open_VSX-Cursor_+_VSCodium-a60ee5.svg?style=flat-square&logo=vscodium&logoColor=white)](https://open-vsx.org/extension/neural-llm/power-claude)\n[![npm (CLI)](https://img.shields.io/badge/npm_(CLI)-global_install-cb3837.svg?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/power-claude)\n[![Direct .vsix](https://img.shields.io/badge/Direct_.vsix-neural--llm.com-7c3aed.svg?style=flat-square)](https://neural-llm.com/power-claude/downloads)\n[![neural-llm.com](https://img.shields.io/badge/neural--llm.com-downloads_+_docs-7c3aed.svg?style=flat-square)](https://neural-llm.com/power-claude)\n\n**Every way to get Power Claude** — same extension, pick whatever fits your editor and workflow:\n\n| Channel | Best for | Get it |\n|---|---|---|\n| **VS Code Marketplace** | VS Code — one click | `code --install-extension neural-llm.power-claude` |\n| **Open VSX** | Cursor · VSCodium · Gitpod · Windsurf | `cursor --install-extension neural-llm.power-claude` |\n| **npm (CLI)** | any terminal · CI | `npm install -g power-claude` |\n| **Direct .vsix** | air-gapped · manual · pinned version | `code --install-extension power-claude-<version>.vsix` |\n| **neural-llm.com** | downloads · docs · account | [neural-llm.com](https://neural-llm.com/power-claude) |\n<!-- install:end -->\n\n**No install yet? One-shot Health Check (optional A/B):**\n\n```bash\nnpx -y power-claude proof           # personal scan (uses local ~/.claude history)\nnpx -y power-claude proof --recover # recover one unfinished session\ncode --install-extension neural-llm.power-claude\n```\n\nAfter the extension is installed, prefer the short alias: `pc proof`.\n\n\n> Power Claude is an independent extension by Neural-LLM. It is **not affiliated with Anthropic**; \"Claude\" is a trademark of Anthropic, PBC. Power Claude interoperates with Claude Code's local files — it is third-party tooling.\n\n---\n\n## Stop overpaying for Claude capacity\n\nYou're hitting the wall every afternoon. The obvious fix — upgrade to Max, or start paying per-token API rates — costs a multiple of what you pay now. Power Claude gives you a cheaper path to the same headroom.\n\n**Right-size with seats you own.** Each Claude.ai Pro or Max subscription is a completely independent organization on Anthropic's side, each with its **own** 5-hour, 7-day, TPM, and RPM windows. **N seats you own ≈ N independent windows** — at the price of N Pro subscriptions instead of one Max plan. Install default is **manual multi-account**; the **Auto-Rotation Engine** (optional, OFF by default, grey-area warning) can keep work moving across those seats when you opt in.\n\n<!-- savings:money-block:start (generated by scripts/build/savings-model.mjs — DO NOT EDIT BY HAND) -->\n- 📅 **Annual billing is ~17% cheaper.** Claude Pro is $20/mo month‑to‑month, but $200/yr billed annually — an effective **$16.67/mo, ~17% less**. Annual Pro is the cheapest seat for multi-seat capacity math.\n- 💰 **Apples‑to‑apples: 5 Pro = one Max‑20×'s session ceiling, for ~58% less.** The wall you hit mid‑task is the 5‑hour session token ceiling. One Claude Max‑20× tops out around ~220k tokens per session; **5 Pro seats you own (~44k each) reach the same ~220k** — for a fraction of the price, and with 5 independent windows instead of 1:\n\n|  | 1 × Claude Max‑20× | 5 × Pro seats you own (annual) |\n|---|---|---|\n| 5‑hour session token ceiling | ~220k | ~220k (5 × ~44k) — **same** |\n| Independent rate‑limit windows | 1 | **5** |\n| Monthly cost | $200 | **$83** → **save $117/mo (58%)** |\n\n  *Honest basis:* Anthropic publishes plan multipliers (Max‑20× = \"20× Pro\") and prices, not exact token caps — the ~44k/~220k figures are consistent 2026 estimates. That **20×** is Max‑20×'s *weekly sustained* volume; the **5×** here is the *per‑session ceiling* — the mid‑task wall. Power Claude's own subscription is **$12/mo**, shown separately, never folded into the figures above. Your dashboard runs this against *your* real seats, so it's verifiable — not a slogan.\n<!-- savings:money-block:end -->\n- 📊 **See the savings locally.** Per-account, per-model $/token tracking shows your effective cost under your current subscription tiers versus what the same work would have cost at pay-per-token API rates — so the savings aren't a marketing claim, they're a number in your dashboard.\n- 🎯 **Know when an upgrade is actually worth it.** The cap-hit recommender flags exactly when upgrading a plan would eliminate the throttling that regularly stalls your workflow — and stays quiet when it wouldn't. No upsell guesswork.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/savings-comparison.png\" alt=\"Three ways to buy more Claude capacity — pooled Pro seats vs one Max plan vs per-token API, compared on relative cost and capacity.\" width=\"100%\">\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/demo-cost-analytics.gif\" alt=\"Power Claude cost analytics — per-account, per-model $/token tracking with your effective subscription cost compared against pay-per-token API rates, live in the dashboard.\" width=\"100%\">\n\n> **Why it works**: Claude.ai Pro and Max subscriptions each carry their own 5-hour, 7-day, TPM, and RPM windows — independent organizations on Anthropic's side. Capacity math compares seats **you own** to Max. Continuity automation is **opt-in**. Every account stays within its own published limits — Power Claude does **not** claim Anthropic approval of automated rotation.\n\nAll cost math runs locally. Power Claude reads Claude Code's own local state and session transcripts — the same files Claude Code writes. No token counts, transcripts, or usage data leave your machine.\n\n---\n\n\n### More visuals\n\nSavings and multi-seat capacity overview (after the walk-away proof above):\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/hero-cost-multiplier.png\" alt=\"Power Claude — multi-seat capacity you own at a fraction of Max cost\" width=\"100%\">\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/hero-value-props.gif\" alt=\"Power Claude — savings vs Max, session recovery, and local dashboards.\" width=\"100%\">\n\n## Power Claude vs. vanilla Claude Code\n\n| | Claude Code alone | With Power Claude |\n|---|---|---|\n| **First 60 seconds** | Feature docs / config | **`pc proof`** Health Check on *your* stalled sessions |\n| **Cost of more capacity** | Upgrade to Max, or pay per-token API rates | Right-size with Pro seats you own + Token Saver — *N* seats ≈ *N* independent windows (vs Max math) |\n| **Usage limit (429)** | Wait for the window to reset | Pause + preserve by default; optional **Auto-Rotation Engine** (opt-in, grey-area) continues across seats you own |\n| **Cost visibility** | None built in | Per-account, per-model $/token tracking + subscription-vs-API comparison |\n| **Multiple accounts** | Manual logout / login each time | Profiles + manual switch; Auto-Rotation Engine only after warning ack |\n| **Crashed / stalled session** | Notice late, restart by hand, lose context | Watchdog + same-profile auto-resume + one-click recover |\n| **Session history** | Hunt through JSONL transcripts + git diffs | Session Explorer: files touched, model, cost, completion status |\n| **Where your data goes** | — | All local — no prompts or code ever leave your machine |\n| **Editors** | VS Code, Cursor | VS Code, Cursor, and a CLI — one shared `~/.power-claude/` |\n\n---\n\n## Core capabilities\n\n### 🩺 Claude Health Check (Proof Mode) — first win\n\nBefore license tours or multi-seat setup:\n\n```bash\npc proof              # scan YOUR recent Claude sessions (local)\npc proof --recover    # recover the most recent unfinished session\npc proof --protect    # arm same-profile continuity for the next run\n```\n\nPersonal counts and minutes only. No prompts, paths, or accounts leave your machine. Share cards are explicit and anonymized (`pc proof --share`).\n\n### 🔄 Multi-account continuity + Auto-Rotation Engine (opt-in)\n\n**Install default: Manual multi-account.** You switch seats yourself; same-profile recovery and watchdog still apply.\n\n**Auto-Rotation Engine (optional):** OFF until you acknowledge a firm grey-area warning (`pc rotation engine enable --i-understand` or Setup Guide). Not approved by Anthropic; use at your own risk. When ON, classic continuity behavior applies across **seats you own** (score/select, cooldowns, anti-ping-pong, load distribution) with an OAuth boundary designed so Power Claude does not hold subscription OAuth as a third-party vault.\n\nWhen the engine is ON and a seat hits a limit/health signal:\n\n1. The Stop hook / proxy path detects the rate-limit or health signal  \n2. The next eligible **user-owned** account is selected  \n3. The session resumes with preserved local state  \n\nStatus is always visible (`pc rotation status`, dashboard badge ON/OFF/PAUSED). Kill-switch: `pc emergency`.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/demo-rotation-zero-wait.gif\" alt=\"Power Claude continuity demo — limit handling and resume (Auto-Rotation Engine opt-in).\" width=\"100%\">\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/08-balanced-mode-status-bar.png\" alt=\"Power Claude status bar showing multi-seat health when Auto-Rotation Engine is enabled.\" width=\"100%\">\n\n\n### 🏠 Home · View 2.0\n\nModern Home dashboard with multi-view compare (Classic Home remains available). Built for day-to-day ops: sessions, accounts chrome, and recovery without the old single-pane clutter.\n\n### 🔀 Model tabs stay honest\n\nWhen you switch Model chrome to a pure non-Claude host (lab), capacity and “needs login” counts stay **on that host** — they never silently reuse Claude pool expired numbers.\n\n### 🗺 Harness Flow\n\nSee the harness design map (Blueprint), what a session ran (Session), and the path on the map (Compare) — local visibility tools for how orchestration behaves.\n\n### 🗂️ Account groups (isolated context)\n\nPartition Claude accounts into named groups (Work / Personal / clients) with **isolated** projects/memory trees so context does not bleed across roles.\n\n- Create groups in the dashboard (**Profiles → Account groups**) or `pc scope create`\n- Drag accounts between groups, or `pc scope add` / `pc scope move`\n- **Use this group** / `pc scope use` selects the active set for new work\n- Credentials stay private per account — groups organize membership and local context only\n\n### ⚡ Power Mode — N× windows (requires Auto-Rotation Engine ON)\n\nWhen the **Auto-Rotation Engine is enabled**, Power Mode routes work to the least-busy seat among those you own so independent windows fill in parallel. With three seats you get an effective **~3×** concurrency on independent 5h / 7d / TPM / RPM windows during heavy sub-agent fan-out.\n\n| Mode | How it works | Best for |\n|------|-------------|----------|\n| **Manual / engine OFF** | You pick seats; same-profile recovery still works | Default install, compliance-first |\n| **Engine ON — standard** | Stays on one seat until health/limit, then switches | Light to moderate multi-seat |\n| **Engine ON — Power Mode** | Prefers least-loaded seat among serveable accounts | Heavy / continuous coding sessions |\n\nEnable engine first (warning ack), then Power Mode from **Power Claude Settings** or `power-claude balanced on`.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/demo-parallel-throughput.gif\" alt=\"Power Claude Power Mode — every request is routed to the least-busy account simultaneously, filling all accounts in parallel for ~N× throughput during heavy sub-agent fan-out.\" width=\"100%\">\n\n### 🔥 Reset burn-down — don't leave capacity on the table\n\nWhen multi-account rotation is on, Power Claude does more than equalize fill. **Reset burn-down** (default **ON**) watches each seat's Anthropic **5h/7d reset** timestamps and residual capacity. As a seat approaches reset with usage still left, the router **pulls more work onto that seat** — progressively harder over the full remaining window (steepest at the end) — so residual quota is used before the window rolls. Pin a host seat to stay attached until it is limited. Farther-from-reset seats stay available for later.\n\n| Signal | Role |\n| ------ | ---- |\n| Reset times | Authoritative Anthropic headers (exact) |\n| Residual | `1 − utilization` on 5h (then 7d) |\n| Urgency | Progressive ramp in the last ~90 minutes |\n\nToggle: `powerClaude.proxy.resetBurnDown` (default true). Pairs with **smart** parallel mode (default).\n\n### Extra usage auto-apply — expiring reset credits\n\n`GET /api/oauth/usage` now exposes **`extra_usage`**. Unused extra-usage / reset credits that **expire** are **auto-applied 5 minutes before expiry** (default ON). Toggle: `powerClaude.proxy.autoApplyExpiringExtraUsage`.\n\n### ⏱ Runout Forecaster — see the wall coming hours in advance\n\nPower Mode and smart 429 routing prevent most rate-limit hits, but they can't *stretch* your subscriptions past their real limit. The Runout Forecaster watches utilization across every account and projects, at your current burn rate, whether you'll exhaust capacity before the 5-hour or 7-day windows reset.\n\n| State | Banner |\n| ----- | ------ |\n| Safe | **green** — \"Capacity safe through next reset (~3h 41m)\" |\n| Some accounts at risk | **amber** — \"3 of 12 accounts at risk\" |\n| Exhaustion imminent | **red** — \"Seats exhaust in ~28m\" |\n\nEach account row also gets a tiny per-account ETA chip (`✓ safe`, `ETA 1h 47m`, `ETA 14m`) so you can spot the bottleneck without opening drawers.\n\n**The math is honest**: reset times come from Anthropic's authoritative rate-limit headers, so the \"will I make it before reset?\" half of the calculation is *exact*. Only burn rate is estimated, from a rolling sample buffer of the last 30 minutes of utilization observations. When there isn't yet enough data to project (first ~2 minutes after activation, or no activity), the banner is suppressed and the chips show `—`.\n\n### ↻ Auto-resume + resilience watchdog + Auto-Resume Nudges\n\nRate limits aren't the only thing that kills a session. Process kills, OOM events, IDE crashes, network drops mid-tool-call, and sessions that ended cleanly but left work unfinished all used to leave you with a stale tab and a manual recovery.\n\nThe watchdog polls every 30 seconds and applies four detection rules:\n\n| Trigger | Signal | What it means |\n|---------|--------|---------------|\n| **Heartbeat-stale** | No `lifecycle:heartbeat` in N seconds AND JSONL idle | Process kill, OOM, IDE crash, or network drop |\n| **Tool-truncation** | Last assistant record is `stop_reason: tool_use` with no follow-up | Died mid-tool-call |\n| **Ended with pending tasks** | Stopped cleanly but task items still pending | Session said \"done\" but work remains |\n| **Rate-limit** | `pending-recovery.json` written by Stop hook | Standard rate-limit rotation |\n\nWhen the watchdog fires, Power Claude surfaces a one-click QuickPick with a reason-aware resume prompt — each death type gets tailored wording so the agent picks up with the right context.\n\n**Auto-Resume Nudges** catch the more annoying case: sessions that stop *politely* when they should keep going. Claude pauses to ask \"want me to continue?\", offers a three-option menu when one option is obvious, or tells *you* to run a command it could have run itself. A family of toggleable detectors fires on every Stop event; when a pattern matches and no hard-stop veto fires (auth failure, missing credential, destructive op pending, approval gate), the Stop hook re-issues the turn with a *targeted* corrective prompt:\n\n| Default-on nudge | What it catches | What the agent sees back |\n|------------------|-----------------|--------------------------|\n| `ask-permission-to-continue` | \"Want me to continue?\" / \"Should I keep going?\" | \"Continue the work. Don't ask permission for obvious next steps.\" |\n| `offer-multi-choice` | \"Three reasonable next moves — 1) … 2) … 3) … which?\" | \"Pick the most obvious option and proceed.\" |\n| `tell-user-to-do-work` | \"You can run X to verify\" / \"You'll need to deploy\" | \"You have the tools to do this yourself.\" |\n| `pseudo-checkpoint` | \"Good stopping point\" / \"Let's pause here\" with no reason | \"There's no reason to pause. Continue to the next concrete deliverable.\" |\n\nFour more nudges ship opt-in for aggressive cases. A **shadow mode** logs every would-fire decision without resuming so you can audit before going live, and a **loop guard** caps consecutive nudges at 3. An **optional LLM fallback** (off by default; Haiku 4.5 when on) handles ambiguous stops the deterministic catalog missed — bounded to one ~128-token classification call per Stop, empirically ~3% of stops. The catalog lives at `~/.power-claude/config/nudges.json`; edit it directly to tune patterns.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/demo-watchdog.gif\" alt=\"Power Claude resilience watchdog in action — it detects a session interrupted mid-task and offers one-click recovery (resume in a healthy account, open read-only, or dismiss), so a 429 mid-task never loses the run.\" width=\"100%\">\n\n### 🩹 Session Actions — one-click recovery, right on the line that broke\n\nWhen a turn dies with **\"Prompt is too long\"**, you don't have to copy context into a fresh chat by hand. Power Claude detects the error on the chat line and injects a branded **Heal** button right there — click it and the session is trimmed and resumed automatically (the same trim-and-resume recovery the watchdog uses), no retyping.\n\nHeal is the first of a family of **Session Actions** — recovery actions matched to *how* a session got stuck:\n\n| Action | When it appears | What it does |\n|--------|-----------------|--------------|\n| **Heal** | \"Prompt is too long\" / compaction thrash | Trim the conversation and resume in a fresh session |\n| **Unstick** | Repeating tool loop | Fork from the last good checkpoint |\n| **Revive** | Crashed / abandoned | Fork from the last good checkpoint |\n| **Re-run tool** | Truncated mid tool-call | Re-issue the tool call |\n| **Finish tasks** | Stopped with TODOs pending | Resume and inject the pending tasks |\n| **Resume** | Idle / stuck after a rate-limit window | Plain resume |\n| **Repair turn** | Wedged thinking turn (HTTP 400 on resume) | Trim the orphaned turn |\n\nEvery action is available three ways: the **inline button** on the chat line, the **`Power Claude: Session Actions`** command (pick a session → pick an action), and the **CLI** (`pc session action heal <session-id>`). Each action is settings-gated (`powerClaude.sessionActions.*`) and its recovery strategy is configurable. Manual by default — you stay in control.\n\n### 📊 Insight Graph + cost analytics + editor-gutter blame\n\nAfter a long session, you want to know: *What did it change? Which files? What model, and what did it cost? Did it finish?* Today you answer those by hunting through JSONL transcripts and git diffs. Power Claude answers them in one click, rendering your session history as a commit-graph-style lane view — the visual language GitLens made familiar for git, applied to AI coding sessions.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/hero-insight-graph.png\" alt=\"Power Claude Insight Graph\" width=\"100%\">\n\nEach row is a session, carrying a model badge (with version), total cost, files-changed count, the account that handled it, and a completion status (done / pending / untracked). Click any session to expand the full detail without leaving VS Code:\n\n- **Files panel** — every file read, written, or edited, with per-file diff vs the session's git snapshot, op-type counts, and timestamps\n- **Sub-agents** — forked agents appear as child lanes linked to the parent\n- **Hooks fired** — which Claude Code hook scripts ran, with exit codes and timing\n- **Rate-limit events** — when the session hit a cap, which account it rotated to, and the cooldown length\n- **Plans drafted** and **commits authored** — plan-mode artifacts and every `git commit`, clickable to open the diff\n- **Multi-track timeline** — tool calls, hook firings, model switches, and rate-limit events on one synchronized time axis\n\n**Cost analytics & honest metering** track token consumption and dollar cost per session, per account, and per model with plan-tier-aware math: per-account breakdowns by model with daily / weekly / monthly rollups, **provider-separated anchors** (Claude vs Grok never collide) on real window start/end times so you can test marketing claims against measured periods, user-defined anchors (`pc tracking`), trip odometers, the cap-hit upgrade recommender, and subscription savings versus pay-per-token API rates.\n\n**Inline session blame** annotates each region of any open file with the Claude session that last touched it — exactly like git blame, but for AI editing activity. Hover for the session summary (date, model, cost, completion status); click to jump to the full detail view. It runs alongside GitLens in a separate gutter column with distinct visual language, so the two never conflict.\n\n<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/10-session-blame-gutter.png\" alt=\"Power Claude session-blame gutter: each block of code is annotated with the Claude session that authored it, its model, and cost, with a hover card showing full session detail.\" width=\"100%\">\n\n### 🎯 Preserve-Focus Fix — stop Claude Code from yanking your cursor\n\nYou're typing in a file. Claude finishes a response. Suddenly your cursor jumps to the Claude panel and your keystrokes land in the wrong place — or you accidentally accept a pending action because your finger was already on `Enter`.\n\nThis is [anthropics/claude-code#32726](https://github.com/anthropics/claude-code/issues/32726) — open since early 2026, no shipping fix. The Claude Code VS Code extension calls `WebviewPanel.reveal()` without `preserveFocus: true` on six code paths. Power Claude ships the patch Anthropic hasn't:\n\n- **Two settings** — `powerClaude.preserveFocusFix.enabled` (default OFF — opt in once) and `powerClaude.preserveFocusFix.autoRunOnUpgrade` (default ON). Flip the first to `true`, reload the window, and the focus-steal is gone.\n- **Six surgical patches** to the installed `extension.js`, anchored on stable string literals; after every Claude Code upgrade Power Claude detects the changed mtime and re-patches automatically.\n- **Idempotent and reversible** — a sentinel comment makes re-runs a no-op, and a one-shot `.preserve-focus.orig` backup beside each patched file lets you undo cleanly.\n- **Manual command** — `Power Claude: Re-apply Preserve-Focus Patch to Claude Code Extension` for the rare case the auto-detector misses an upgrade.\n\nIf Anthropic ships the proper upstream fix, you'll uninstall this in one toggle.\n\n---\n\n### 🎨 Purple Scrollbars — Power Claude's brand, on your scrollbars\n\nA small one: Power Claude themes VS Code's scrollbars in its own brand violet, on by default.\n\n- **One setting** — `powerClaude.scrollbarTheme.enabled` (default ON). VS Code has no per-extension or per-tab scrollbar API, so this necessarily colors scrollbars across the whole editor, not just Power Claude's own views — turn it off any time via Settings → Power Claude: 🎨 Branding & Theme.\n- **Non-destructive** — your prior `workbench.colorCustomizations` values (or the absence of any) are snapshotted before the first apply and restored exactly on disable or uninstall.\n- **No reload needed** — applies and reverts live.\n\n---\n\n### ⬆️⬇️ Chat scroll buttons — jump to the top or bottom of a long conversation\n\nSmall purple floating **↑ / ↓** buttons on the right edge of the *Claude Code\nchat thread*: one click jumps straight to the beginning of the conversation,\none click jumps to the newest message — no hand-scrolling through a\nthousand-line thread.\n\n- **One setting** — `powerClaude.chatScrollNav.enabled` (default ON, Settings →\n  Power Claude: 🧩 Claude Core).\n- **Only when useful** — the buttons appear only while the thread is actually\n  long enough to scroll; short chats stay clean.\n- **Smooth scrolling** that respects your OS's reduced-motion preference, and\n  survives Claude Code auto-updates via Power Claude's self-heal.\n\n---\n\n### 🧪 Detached Sessions *(experimental · Pro)* — your turn keeps running when you close the tab\n\nLove that the Claude **CLI** keeps working when you refresh or close the window — but want a real **graphical UI** instead of a bare terminal? That's Detached Sessions.\n\nTurn it on and a turn you launch runs inside its own **systemd user service** — its own cgroup, the same escape the rotation proxy relies on — so a browser-tab sleep, a page refresh, or closing the window **can't kill it**. When you come back, the dashboard **reattaches and replays** everything you missed, then live-tails the rest. The CLI's persistence, behind the GUI.\n\n- **Resilience** — stop losing a 10-minute agent run to a flaky code-server / remote connection. It finishes whether or not you're watching.\n- **Efficiency** — reconnect to the *same running work* instead of burning a fresh turn to rebuild context; you don't pay twice for the same thing.\n- **Safe by construction** — default OFF; every turn still routes through the rotation proxy (quota & savings tracking intact); bounded by a hard turn-timeout, an idle reaper, and a concurrency cap; honours the `pc emergency` kill-switch.\n- **Requires** Linux with a `systemd --user` manager (typical for code-server / remote dev). On other hosts the toggle stays disabled — it never pretends to persist when it can't.\n\nEnable it from the dashboard's **Rotation Safety Controls** or the **Setup & Optimize** wizard.\n\n---\n\n## Quickstart\n\nTwo install paths, both fully working from a single command.\n\n**VS Code Marketplace (recommended):**\n\n```bash\ncode --install-extension neural-llm.power-claude\n```\n\nOr search \"Power Claude\" in the VS Code Extensions panel. After install, click the Power Claude icon in the activity bar. The extension creates `~/.power-claude/` automatically, migrates any legacy data, and starts the local rotation proxy. No PATH changes required — every action is available from the dashboard and command palette.\n\n**npm CLI (terminal-only or scripting):**\n\n```bash\nnpm install -g power-claude\npower-claude install\n```\n\n`npm install -g` puts two binaries on your PATH: `power-claude` (canonical) and `pc` (short alias). `power-claude install` creates `~/.power-claude/`, deploys lib + hook scripts, and appends the bin path to your shell rc. Use `pc help` to see the full command list.\n\n**Commands at a glance:**\n\n```bash\npc list                       # all accounts with quota bars + status\npc status                     # proxy status dashboard\npc watch                      # LIVE TUI — account table + activity stream + modal hotkeys\npc rotate                     # rotate to next healthy account\npc rotate work-account        # rotate to specific account\npc health                     # probe accounts and render with live data\npc add                        # add an account profile\npc switch <name>              # switch active account\npc relogin <name>             # re-authenticate one account (OAuth flow)\npc save-profile <name>        # save current credentials as named profile\npc remove <name>              # delete a profile\npc export --output backup.json # export/back up all accounts to a file\npc import backup.json         # restore / move accounts onto another machine\npc logs -f --level error      # tail event log with filters\npc proof                      # Claude Health Check — first win on YOUR sessions\npc run                        # launch `claude` (engine path only if Auto-Rotation ON)\npc serve --port 8888          # start engine/proxy process (when engine ON)\npc doctor                     # full diagnostic checklist\npc config get|set|list        # CLI configuration\npc disable [--strip-profiles] # turn off rotation (destructive variant strips non-active)\npc enable                     # turn rotation back on\n```\n\n**Both install paths use the same runtime directory** (`~/.power-claude/`), so you can have the extension AND the CLI installed and they share state.\n\n**Add more accounts:** click **Link Account** in the accounts tree (extension) or run `pc relogin <name>` (CLI). Multiple seats enable multi-account capacity and optional Auto-Rotation Engine. See [Multi-seat accounts — one inbox, many logins](#multi-seat-accounts--one-inbox-many-logins).\n\n**Move accounts to another workspace or computer:** set everything up once, then carry profiles over instead of re-logging in everywhere. In the extension, use the **Export** / **Import** buttons on the Accounts panel; from a terminal, `pc export --output accounts.json` then `pc import accounts.json` on the other machine. The bundle contains your login credentials in plain text — keep it private, move it over a trusted channel, and delete it once imported (or use `pc export --gpg <key>` for an encrypted bundle). Accounts that already exist on the destination are skipped automatically.\n\n### Multi-seat accounts — one inbox, many logins\n\nEach Claude account is a separate Anthropic subscription with its **own** rate-limit windows — that independence is the capacity basis for multi-seat right-sizing. Every account you add is a real, paid subscription (more seats ≠ free capacity); the trick below is how to manage many logins without juggling many inboxes. Continuity automation is **opt-in** (Auto-Rotation Engine). Every account stays within its **own** published limits.\n\nYou don't need a separate inbox per account. Sign each one up with its own **email alias** that all forward to a single inbox, then `claude login` each as a Power Claude profile:\n\n| How | What you do | Cost |\n|---|---|---|\n| **Plus-addressing** | `you+pc1@gmail.com`, `you+pc2@gmail.com`, … all land in `you@gmail.com` (Gmail, Fastmail, iCloud, most providers). | Free, instant — but some signup forms reject the `+`. |\n| **Custom-domain aliases / catch-all** | Own a domain? Route `pc1@yourdomain.com`, `pc2@yourdomain.com` (or a `*@` catch-all) to your inbox. [Cloudflare Email Routing](https://developers.cloudflare.com/email-routing/) is free; Google Workspace and Fastmail support it natively. | Free–cheap; most reliable for signups. |\n| **Alias service** | [SimpleLogin](https://simplelogin.io/), [addy.io](https://addy.io/), Apple **Hide My Email**, or Firefox Relay mint unlimited forwarding aliases on demand. | Free tiers cover plenty. |\n| **Separate real inboxes** | Just use distinct real email addresses. | Free. |\n\nIf you run your own mail server, a single admin command per alias is enough — e.g.:\n\n```bash\n# one alias per account, all forwarding to your real inbox\nsetup alias add power-claude-1@yourdomain.com you@yourdomain.com\nsetup alias add power-claude-2@yourdomain.com you@yourdomain.com\n# …repeat, then `claude login` each at https://claude.ai and save it as a profile\n```\n\nThen add each in Power Claude (**Link Account**, or `pc relogin <name>`). Pro accounts on **annual billing** are the cheapest seats for multi-seat capacity math — see [Stop overpaying](#stop-overpaying-for-claude-capacity).\n\n**Enable the full resilience watchdog (optional, extension only):** run \"Power Claude: Install Session Lifecycle Hooks\" from the command palette. Three lightweight hooks land in `~/.power-claude/hooks/lifecycle/` and emit heartbeat / session-end markers; the watchdog's precision detection depends on these. Opt-in; nothing in your Claude Code config is modified without explicit consent.\n\n**Enable editor gutter blame (optional):** run \"Power Claude: Install Timeline Hook\" from the command palette to enable AI-edit annotations in VS Code's Timeline view and the editor gutter.\n\n**Pro features:** enter your license key in `Settings > Power Claude > License Key`. A 7-day free trial starts automatically on install — no card required. See [Free Trial vs Pro](#free-trial-vs-pro) for what each tier includes.\n\n---\n\n## Free Trial vs Pro\n\nSee [neural-llm.com/pricing](https://neural-llm.com/pricing) for current pricing and tier details.\n\n**Free to download and install.** On first run Power Claude automatically starts a 7-day free trial — no card required, full Pro access for the window. After the trial, paid features (Auto-Rotation Engine path, multi-seat advanced features, parallel dispatch, account pinning, the full watchdog) lock and the extension runs in passthrough mode; only the read-only dashboard, profile management, and session resume remain. There is no ongoing free tier.\n\nPro unlocks unlimited accounts, the full watchdog with all four detection rules, the editor gutter blame annotations, the session graph view (Cytoscape.js force-directed and hierarchical layouts), pre-commit review, advanced search with field filters, and session history with no day limit.\n\n**Try Pro with founder pricing — the best value.** Start a **14-day Premium Trial** at [neural-llm.com/pricing](https://neural-llm.com/pricing): card on file, **$0 today**, and your first charge isn't until day 15 — at the discounted **founder rate you lock in for 2 full years**. Cancel anytime before day 15 and you're never charged. Prefer no card at all? The 7-day free trial (no card) starts automatically on install.\n\n[<img src=\"https://raw.githubusercontent.com/neural-llm-io/power-claude/main/media/marketplace/premium-trial-cta.png\" alt=\"Start your 14-day Premium Trial — $0 today, cancel anytime before day 15\" width=\"100%\">](https://neural-llm.com/pricing)\n\n---\n\n## FAQ\n\n**Does this work with the Anthropic API directly, or only with Claude Code?**\n\nPower Claude is built specifically for Claude Code — the CLI and IDE tool at `claude.ai/code`. It reads the local state Claude Code writes under its own config directory. It does not work with raw Anthropic API calls or with Claude.ai in the browser.\n\n**What data leaves my machine?**\n\nOnly your license key, a hashed machine identifier, and the extension version are transmitted — to `api.neural-llm.com` during license validation. That validation is cached locally for 24 hours; no call is made on every keystroke. No prompts, no file contents, no transcripts, no usage data, no authentication tokens. Full details at [neural-llm.com/privacy-policy](https://neural-llm.com/privacy-policy).\n\n**Can I use multiple Claude accounts?**\n\nYes. Add as many seats as you own. Power Claude tracks health, cooldown, and spend per profile. **Manual multi-account is the default.** Automatic continuity across seats requires the **Auto-Rotation Engine** (opt-in, OFF by default, grey-area warning — use at your own risk). Session Explorer annotates which profile handled each part of a session when multi-seat is in use.\n\n**Can I run several accounts from one email inbox?**\n\nYes — you don't need a separate inbox per account. Sign each Claude account up with its own email *alias* (plus-addressing like `you+pc1@gmail.com`, a custom-domain catch-all, or an alias service such as SimpleLogin / iCloud Hide My Email), all forwarding to one inbox, then add each as a Power Claude profile. Each account is still its own real, paid Anthropic subscription within its own limits — the alias is purely for managing many logins from one place. Step-by-step: [Multi-seat accounts — one inbox, many logins](#multi-seat-accounts--one-inbox-many-logins).\n\n**What happens when I hit a Claude rate limit?**\n\nIf you have a second healthy account, Power Claude rotates to it automatically and resumes your session — usually within a few seconds. If all accounts are in cooldown, Power Claude displays the soonest-recovering countdown and optionally (`powerClaude.autoSelectSoonest`) activates the first account whose cooldown clears.\n\n**How is this different from GitLens?**\n\nGitLens maps your git history to your code. Power Claude maps your *AI session history* to your code. The two are complementary and designed to coexist. GitLens tells you which commit introduced a line. Power Claude tells you which Claude session wrote that commit, what it cost, which model it used, and whether it finished what it started.\n\n**How much does Pro cost?**\n\nSee [neural-llm.com/pricing](https://neural-llm.com/pricing) for current pricing. A 7-day free trial (no card) starts automatically on install. The 14-day Premium Trial (card on file, $0 today, first charge on day 15, cancel anytime before then) locks in founder pricing for 2 years. There is no ongoing free tier — after the trial a paid subscription is required for Pro features.\n\n**What is the refund policy?**\n\nFull refund within 14 days of purchase, no questions asked. Contact [support@neural-llm.com](mailto:support@neural-llm.com) with your order details.\n\n---\n\n## Extending Power Claude\n\nPower Claude exposes a stable public API for other VS Code extensions to read session data, contribute custom tabs to the Session Detail webview, and enrich the Insight Graph with domain-specific data.\n\n```ts\n// In your extension's activate():\nconst powerClaude = vscode.extensions.getExtension(\"neural-llm.power-claude\");\nconst api = await powerClaude.activate();   // PowerClaudePublicApi\n\n// Read the live session index.\nconst sessions = api.sessions.list({ limit: 20 });\napi.sessions.onDidChange(() => /* re-read */);\n\n// Contribute a new tab to the Session Detail webview.\napi.contributeSessionDetailTab({\n  id:    \"myExt.audit\",\n  label: \"Audit\",\n  render(ctx) {\n    return {\n      html: `<p>Audit findings for ${ctx.sessionId}</p>`,\n      messageHandlers: {\n        \"myExt.audit.openTrace\": (payload) => /* … */,\n      },\n    };\n  },\n});\n\n// Contribute a session enricher (lightweight read-only augmentation).\napi.contributeSessionEnricher({\n  id: \"myExt.severityScore\",\n  label: \"Severity Score\",\n  enrich(session) { return { score: 0.42 }; },\n});\n```\n\nFull API surface at [neural-llm.com/power-claude](https://neural-llm.com/power-claude). Contracts under the `PowerClaudePublicApi` interface follow semver — breaking changes are rare and announced in the changelog.\n\n---\n\n## What Power Claude does NOT do\n\n- Does not make API calls to Anthropic on your behalf\n- Does not bypass, circumvent, or violate any Anthropic rate limit or term of service — every account stays within its own published limits\n- Does not transmit your prompts, code, transcripts, or authentication tokens off your machine\n- Does not modify your global Claude Code config without explicit consent (all hook installers are opt-in command-palette invocations)\n- Does not require any VS Code workspace to be open — the extension activates on Claude Code state changes regardless\n\n---\n\n## What Power Claude writes to disk\n\nEverything runtime lives under **`~/.power-claude/`**:\n\n| Path | Contents |\n|------|----------|\n| `~/.power-claude/profiles/` | OAuth profiles for each Claude account (rotation pool) |\n| `~/.power-claude/state/` | Rotation state, lockouts, pending-recovery markers |\n| `~/.power-claude/logs/` | events.jsonl, watchdog.log, rotation-audit.log |\n| `~/.power-claude/lib/` | Bundled shell helpers, deployed at install time |\n| `~/.power-claude/hooks/` | Lifecycle + rate-limit hook scripts |\n| `~/.power-claude/cache/` | devtools-data.json, session-index.json |\n| `~/.power-claude/config/` | config.json, auto-rewake-config.json |\n\nThe **only** files Power Claude writes outside `~/.power-claude/`:\n\n| File | Why |\n|------|-----|\n| Claude Code's credentials file | Claude Code reads its OAuth credentials from here. Power Claude overwrites this file on rotation so Claude Code sees whichever account is active. |\n| Claude Code's settings file | Hook registrations (with your consent). Power Claude appends entries; entries from other tools and your own settings are preserved. Removing the extension via \"Power Claude: Uninstall Everything\" strips every Power Claude entry cleanly. |\n\nEarlier versions stored profiles, state, and hook scripts under Claude Code's config directory. On first run, the migration module moves any legacy data into `~/.power-claude/` and deletes the legacy copies — no manual cleanup needed.\n\n**Complete uninstall:** run \"Power Claude: Uninstall Everything\" from the command palette, or `rm -rf ~/.power-claude && code --uninstall-extension neural-llm.power-claude`. The uninstall command strips every Power Claude entry from Claude Code's settings file and removes `~/.power-claude/`; your Claude Code credentials and other settings are untouched.\n\n---\n\n## Privacy\n\nLocal-first. Power Claude reads from:\n\n- `~/.power-claude/profiles/` — your rotation pool's OAuth profiles\n- `~/.power-claude/state/` — rotation state, lockouts, recovery markers\n- `~/.power-claude/logs/` — events.jsonl, rotation-audit.log\n- Claude Code's own session transcripts — used only for token-bucket counts and session indexing (read-only)\n- Claude Code's edit-history state — only if you opt in to Timeline tracking\n\nThe **only** files Power Claude writes outside `~/.power-claude/` are Claude Code's credentials file (so Claude Code picks up the rotated account) and Claude Code's settings file for hook registrations (with your consent). See **What Power Claude writes to disk** above for the complete list.\n\nNo data leaves your machine. No cloud telemetry. Full privacy policy at [neural-llm.com/privacy-policy](https://neural-llm.com/privacy-policy).\n\n---\n\n## Get Power Claude\n\n```bash\ncode --install-extension neural-llm.power-claude\n```\n\n**Two ways to start, both $0 today:** the **7-day free trial** (no card, auto-starts on install), or the **14-day Premium Trial** that locks in founder pricing for 2 years (card on file, nothing charged until day 15, cancel anytime). Start with `pc proof`, then add seats you own and watch savings in your dashboard.\n\n[![Start your 14-day Premium Trial — $0 today, cancel anytime before day 15](https://img.shields.io/badge/Start_your_14--day_Premium_Trial-%240_today-22c55e?style=for-the-badge&labelColor=16a34a)](https://neural-llm.com/pricing)\n\n---\n\n## Support\n\n- Bug reports: [github.com/neural-llm-io/power-claude/issues](https://github.com/neural-llm-io/power-claude/issues)\n- Email: [support@neural-llm.com](mailto:support@neural-llm.com)\n- Sales / licensing: [support@neural-llm.com](mailto:support@neural-llm.com)\n\n---\n\n## License\n\nNeural-LLM commercial EULA — see [LICENSE](LICENSE) and [neural-llm.com/eula](https://neural-llm.com/eula). Copyright (c) 2025-2026 Neural-LLM.\n\n---\n\n## Trademarks\n\nClaude and Claude Code are trademarks of Anthropic PBC. Visual Studio Code is a trademark of Microsoft Corporation. Cursor is a trademark of Anysphere Inc. Neural-LLM is not affiliated with, endorsed by, or sponsored by Anthropic, Microsoft, or Anysphere. Power Claude is an independent third-party tool that interoperates with the public file outputs of Claude Code.\n","readmeFilename":"README.md"}