claude-chrome-parallel 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +501 -0
- package/assets/demo.svg +278 -0
- package/dist/cdp/client.d.ts +218 -0
- package/dist/cdp/client.d.ts.map +1 -0
- package/dist/cdp/client.js +797 -0
- package/dist/cdp/client.js.map +1 -0
- package/dist/cdp/connection-pool.d.ts +125 -0
- package/dist/cdp/connection-pool.d.ts.map +1 -0
- package/dist/cdp/connection-pool.js +443 -0
- package/dist/cdp/connection-pool.js.map +1 -0
- package/dist/cdp/screenshot-scheduler.d.ts +54 -0
- package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
- package/dist/cdp/screenshot-scheduler.js +87 -0
- package/dist/cdp/screenshot-scheduler.js.map +1 -0
- package/dist/chrome/launcher.d.ts +55 -0
- package/dist/chrome/launcher.d.ts.map +1 -0
- package/dist/chrome/launcher.js +383 -0
- package/dist/chrome/launcher.js.map +1 -0
- package/dist/chrome/pool.d.ts +54 -0
- package/dist/chrome/pool.d.ts.map +1 -0
- package/dist/chrome/pool.js +301 -0
- package/dist/chrome/pool.js.map +1 -0
- package/dist/chrome/profile-detector.d.ts +52 -0
- package/dist/chrome/profile-detector.d.ts.map +1 -0
- package/dist/chrome/profile-detector.js +246 -0
- package/dist/chrome/profile-detector.js.map +1 -0
- package/dist/cli/claude-session.d.ts +11 -0
- package/dist/cli/claude-session.js +349 -0
- package/dist/cli/claude-session.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.js +858 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/install.d.ts +16 -0
- package/dist/cli/install.js +185 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/uninstall.d.ts +7 -0
- package/dist/cli/uninstall.js +126 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/update-check.d.ts +9 -0
- package/dist/cli/update-check.js +141 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/config/config-recovery.d.ts +69 -0
- package/dist/config/config-recovery.d.ts.map +1 -0
- package/dist/config/config-recovery.js +302 -0
- package/dist/config/config-recovery.js.map +1 -0
- package/dist/config/global.d.ts +49 -0
- package/dist/config/global.d.ts.map +1 -0
- package/dist/config/global.js +24 -0
- package/dist/config/global.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +23 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/session-isolator.d.ts +76 -0
- package/dist/config/session-isolator.d.ts.map +1 -0
- package/dist/config/session-isolator.js +268 -0
- package/dist/config/session-isolator.js.map +1 -0
- package/dist/dashboard/activity-tracker.d.ts +76 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -0
- package/dist/dashboard/activity-tracker.js +219 -0
- package/dist/dashboard/activity-tracker.js.map +1 -0
- package/dist/dashboard/ansi.d.ts +117 -0
- package/dist/dashboard/ansi.d.ts.map +1 -0
- package/dist/dashboard/ansi.js +199 -0
- package/dist/dashboard/ansi.js.map +1 -0
- package/dist/dashboard/index.d.ts +110 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +412 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/keyboard-handler.d.ts +43 -0
- package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
- package/dist/dashboard/keyboard-handler.js +215 -0
- package/dist/dashboard/keyboard-handler.js.map +1 -0
- package/dist/dashboard/operation-controller.d.ts +76 -0
- package/dist/dashboard/operation-controller.d.ts.map +1 -0
- package/dist/dashboard/operation-controller.js +167 -0
- package/dist/dashboard/operation-controller.js.map +1 -0
- package/dist/dashboard/renderer.d.ts +76 -0
- package/dist/dashboard/renderer.d.ts.map +1 -0
- package/dist/dashboard/renderer.js +193 -0
- package/dist/dashboard/renderer.js.map +1 -0
- package/dist/dashboard/types.d.ts +56 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +12 -0
- package/dist/dashboard/types.js.map +1 -0
- package/dist/dashboard/views/main-view.d.ts +23 -0
- package/dist/dashboard/views/main-view.d.ts.map +1 -0
- package/dist/dashboard/views/main-view.js +143 -0
- package/dist/dashboard/views/main-view.js.map +1 -0
- package/dist/dashboard/views/sessions-view.d.ts +22 -0
- package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
- package/dist/dashboard/views/sessions-view.js +104 -0
- package/dist/dashboard/views/sessions-view.js.map +1 -0
- package/dist/dashboard/views/tabs-view.d.ts +21 -0
- package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
- package/dist/dashboard/views/tabs-view.js +92 -0
- package/dist/dashboard/views/tabs-view.js.map +1 -0
- package/dist/hints/hint-engine.d.ts +77 -0
- package/dist/hints/hint-engine.d.ts.map +1 -0
- package/dist/hints/hint-engine.js +191 -0
- package/dist/hints/hint-engine.js.map +1 -0
- package/dist/hints/index.d.ts +8 -0
- package/dist/hints/index.d.ts.map +1 -0
- package/dist/hints/index.js +11 -0
- package/dist/hints/index.js.map +1 -0
- package/dist/hints/pattern-learner.d.ts +76 -0
- package/dist/hints/pattern-learner.d.ts.map +1 -0
- package/dist/hints/pattern-learner.js +254 -0
- package/dist/hints/pattern-learner.js.map +1 -0
- package/dist/hints/rules/composite-suggestions.d.ts +6 -0
- package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
- package/dist/hints/rules/composite-suggestions.js +66 -0
- package/dist/hints/rules/composite-suggestions.js.map +1 -0
- package/dist/hints/rules/error-recovery.d.ts +7 -0
- package/dist/hints/rules/error-recovery.d.ts.map +1 -0
- package/dist/hints/rules/error-recovery.js +55 -0
- package/dist/hints/rules/error-recovery.js.map +1 -0
- package/dist/hints/rules/learned-rules.d.ts +13 -0
- package/dist/hints/rules/learned-rules.d.ts.map +1 -0
- package/dist/hints/rules/learned-rules.js +27 -0
- package/dist/hints/rules/learned-rules.js.map +1 -0
- package/dist/hints/rules/repetition-detection.d.ts +7 -0
- package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
- package/dist/hints/rules/repetition-detection.js +82 -0
- package/dist/hints/rules/repetition-detection.js.map +1 -0
- package/dist/hints/rules/sequence-detection.d.ts +6 -0
- package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
- package/dist/hints/rules/sequence-detection.js +89 -0
- package/dist/hints/rules/sequence-detection.js.map +1 -0
- package/dist/hints/rules/success-hints.d.ts +6 -0
- package/dist/hints/rules/success-hints.d.ts.map +1 -0
- package/dist/hints/rules/success-hints.js +62 -0
- package/dist/hints/rules/success-hints.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +272 -0
- package/dist/index.js.map +1 -0
- package/dist/lightpanda/launcher.d.ts +58 -0
- package/dist/lightpanda/launcher.d.ts.map +1 -0
- package/dist/lightpanda/launcher.js +199 -0
- package/dist/lightpanda/launcher.js.map +1 -0
- package/dist/mcp-server.d.ts +129 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +641 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/memory/domain-memory.d.ts +68 -0
- package/dist/memory/domain-memory.d.ts.map +1 -0
- package/dist/memory/domain-memory.js +227 -0
- package/dist/memory/domain-memory.js.map +1 -0
- package/dist/orchestration/plan-executor.d.ts +19 -0
- package/dist/orchestration/plan-executor.d.ts.map +1 -0
- package/dist/orchestration/plan-executor.js +284 -0
- package/dist/orchestration/plan-executor.js.map +1 -0
- package/dist/orchestration/plan-registry.d.ts +55 -0
- package/dist/orchestration/plan-registry.d.ts.map +1 -0
- package/dist/orchestration/plan-registry.js +255 -0
- package/dist/orchestration/plan-registry.js.map +1 -0
- package/dist/orchestration/state-manager.d.ts +127 -0
- package/dist/orchestration/state-manager.d.ts.map +1 -0
- package/dist/orchestration/state-manager.js +438 -0
- package/dist/orchestration/state-manager.js.map +1 -0
- package/dist/orchestration/workflow-engine.d.ts +162 -0
- package/dist/orchestration/workflow-engine.d.ts.map +1 -0
- package/dist/orchestration/workflow-engine.js +731 -0
- package/dist/orchestration/workflow-engine.js.map +1 -0
- package/dist/resources/usage-guide.d.ts +13 -0
- package/dist/resources/usage-guide.d.ts.map +1 -0
- package/dist/resources/usage-guide.js +101 -0
- package/dist/resources/usage-guide.js.map +1 -0
- package/dist/router/browser-router.d.ts +51 -0
- package/dist/router/browser-router.d.ts.map +1 -0
- package/dist/router/browser-router.js +178 -0
- package/dist/router/browser-router.js.map +1 -0
- package/dist/router/cookie-sync.d.ts +48 -0
- package/dist/router/cookie-sync.d.ts.map +1 -0
- package/dist/router/cookie-sync.js +106 -0
- package/dist/router/cookie-sync.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +10 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/tool-routing-registry.d.ts +21 -0
- package/dist/router/tool-routing-registry.d.ts.map +1 -0
- package/dist/router/tool-routing-registry.js +90 -0
- package/dist/router/tool-routing-registry.js.map +1 -0
- package/dist/session-manager.d.ts +251 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +912 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/tools/batch-execute.d.ts +11 -0
- package/dist/tools/batch-execute.d.ts.map +1 -0
- package/dist/tools/batch-execute.js +226 -0
- package/dist/tools/batch-execute.js.map +1 -0
- package/dist/tools/click-element.d.ts +8 -0
- package/dist/tools/click-element.d.ts.map +1 -0
- package/dist/tools/click-element.js +455 -0
- package/dist/tools/click-element.js.map +1 -0
- package/dist/tools/computer.d.ts +6 -0
- package/dist/tools/computer.d.ts.map +1 -0
- package/dist/tools/computer.js +638 -0
- package/dist/tools/computer.js.map +1 -0
- package/dist/tools/console-capture.d.ts +6 -0
- package/dist/tools/console-capture.d.ts.map +1 -0
- package/dist/tools/console-capture.js +320 -0
- package/dist/tools/console-capture.js.map +1 -0
- package/dist/tools/cookies.d.ts +6 -0
- package/dist/tools/cookies.d.ts.map +1 -0
- package/dist/tools/cookies.js +263 -0
- package/dist/tools/cookies.js.map +1 -0
- package/dist/tools/drag-drop.d.ts +6 -0
- package/dist/tools/drag-drop.d.ts.map +1 -0
- package/dist/tools/drag-drop.js +252 -0
- package/dist/tools/drag-drop.js.map +1 -0
- package/dist/tools/emulate-device.d.ts +6 -0
- package/dist/tools/emulate-device.d.ts.map +1 -0
- package/dist/tools/emulate-device.js +221 -0
- package/dist/tools/emulate-device.js.map +1 -0
- package/dist/tools/file-upload.d.ts +6 -0
- package/dist/tools/file-upload.d.ts.map +1 -0
- package/dist/tools/file-upload.js +208 -0
- package/dist/tools/file-upload.js.map +1 -0
- package/dist/tools/fill-form.d.ts +8 -0
- package/dist/tools/fill-form.d.ts.map +1 -0
- package/dist/tools/fill-form.js +342 -0
- package/dist/tools/fill-form.js.map +1 -0
- package/dist/tools/find.d.ts +6 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +330 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/form-input.d.ts +6 -0
- package/dist/tools/form-input.d.ts.map +1 -0
- package/dist/tools/form-input.js +181 -0
- package/dist/tools/form-input.js.map +1 -0
- package/dist/tools/geolocation.d.ts +6 -0
- package/dist/tools/geolocation.d.ts.map +1 -0
- package/dist/tools/geolocation.js +172 -0
- package/dist/tools/geolocation.js.map +1 -0
- package/dist/tools/http-auth.d.ts +6 -0
- package/dist/tools/http-auth.d.ts.map +1 -0
- package/dist/tools/http-auth.js +136 -0
- package/dist/tools/http-auth.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +104 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/javascript.d.ts +6 -0
- package/dist/tools/javascript.d.ts.map +1 -0
- package/dist/tools/javascript.js +138 -0
- package/dist/tools/javascript.js.map +1 -0
- package/dist/tools/lightweight-scroll.d.ts +11 -0
- package/dist/tools/lightweight-scroll.d.ts.map +1 -0
- package/dist/tools/lightweight-scroll.js +266 -0
- package/dist/tools/lightweight-scroll.js.map +1 -0
- package/dist/tools/memory.d.ts +10 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +141 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/navigate.d.ts +6 -0
- package/dist/tools/navigate.d.ts.map +1 -0
- package/dist/tools/navigate.js +241 -0
- package/dist/tools/navigate.js.map +1 -0
- package/dist/tools/network.d.ts +6 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +215 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/orchestration.d.ts +6 -0
- package/dist/tools/orchestration.d.ts.map +1 -0
- package/dist/tools/orchestration.js +746 -0
- package/dist/tools/orchestration.js.map +1 -0
- package/dist/tools/page-content.d.ts +6 -0
- package/dist/tools/page-content.d.ts.map +1 -0
- package/dist/tools/page-content.js +120 -0
- package/dist/tools/page-content.js.map +1 -0
- package/dist/tools/page-pdf.d.ts +6 -0
- package/dist/tools/page-pdf.d.ts.map +1 -0
- package/dist/tools/page-pdf.js +245 -0
- package/dist/tools/page-pdf.js.map +1 -0
- package/dist/tools/page-reload.d.ts +6 -0
- package/dist/tools/page-reload.d.ts.map +1 -0
- package/dist/tools/page-reload.js +89 -0
- package/dist/tools/page-reload.js.map +1 -0
- package/dist/tools/performance-metrics.d.ts +6 -0
- package/dist/tools/performance-metrics.d.ts.map +1 -0
- package/dist/tools/performance-metrics.js +158 -0
- package/dist/tools/performance-metrics.js.map +1 -0
- package/dist/tools/read-page.d.ts +6 -0
- package/dist/tools/read-page.d.ts.map +1 -0
- package/dist/tools/read-page.js +287 -0
- package/dist/tools/read-page.js.map +1 -0
- package/dist/tools/request-intercept.d.ts +6 -0
- package/dist/tools/request-intercept.d.ts.map +1 -0
- package/dist/tools/request-intercept.js +439 -0
- package/dist/tools/request-intercept.js.map +1 -0
- package/dist/tools/selector-query.d.ts +6 -0
- package/dist/tools/selector-query.d.ts.map +1 -0
- package/dist/tools/selector-query.js +206 -0
- package/dist/tools/selector-query.js.map +1 -0
- package/dist/tools/shutdown.d.ts +12 -0
- package/dist/tools/shutdown.d.ts.map +1 -0
- package/dist/tools/shutdown.js +120 -0
- package/dist/tools/shutdown.js.map +1 -0
- package/dist/tools/storage.d.ts +6 -0
- package/dist/tools/storage.d.ts.map +1 -0
- package/dist/tools/storage.js +264 -0
- package/dist/tools/storage.js.map +1 -0
- package/dist/tools/tabs-close.d.ts +6 -0
- package/dist/tools/tabs-close.d.ts.map +1 -0
- package/dist/tools/tabs-close.js +124 -0
- package/dist/tools/tabs-close.js.map +1 -0
- package/dist/tools/tabs-context.d.ts +6 -0
- package/dist/tools/tabs-context.d.ts.map +1 -0
- package/dist/tools/tabs-context.js +92 -0
- package/dist/tools/tabs-context.js.map +1 -0
- package/dist/tools/tabs-create.d.ts +6 -0
- package/dist/tools/tabs-create.d.ts.map +1 -0
- package/dist/tools/tabs-create.js +73 -0
- package/dist/tools/tabs-create.js.map +1 -0
- package/dist/tools/user-agent.d.ts +6 -0
- package/dist/tools/user-agent.d.ts.map +1 -0
- package/dist/tools/user-agent.js +128 -0
- package/dist/tools/user-agent.js.map +1 -0
- package/dist/tools/wait-and-click.d.ts +8 -0
- package/dist/tools/wait-and-click.d.ts.map +1 -0
- package/dist/tools/wait-and-click.js +290 -0
- package/dist/tools/wait-and-click.js.map +1 -0
- package/dist/tools/wait-for.d.ts +6 -0
- package/dist/tools/wait-for.d.ts.map +1 -0
- package/dist/tools/wait-for.js +248 -0
- package/dist/tools/wait-for.js.map +1 -0
- package/dist/tools/worker-create.d.ts +7 -0
- package/dist/tools/worker-create.d.ts.map +1 -0
- package/dist/tools/worker-create.js +62 -0
- package/dist/tools/worker-create.js.map +1 -0
- package/dist/tools/worker-delete.d.ts +6 -0
- package/dist/tools/worker-delete.d.ts.map +1 -0
- package/dist/tools/worker-delete.js +80 -0
- package/dist/tools/worker-delete.js.map +1 -0
- package/dist/tools/worker-list.d.ts +6 -0
- package/dist/tools/worker-list.d.ts.map +1 -0
- package/dist/tools/worker-list.js +67 -0
- package/dist/tools/worker-list.js.map +1 -0
- package/dist/tools/xpath-query.d.ts +6 -0
- package/dist/tools/xpath-query.d.ts.map +1 -0
- package/dist/tools/xpath-query.js +230 -0
- package/dist/tools/xpath-query.js.map +1 -0
- package/dist/types/browser-backend.d.ts +30 -0
- package/dist/types/browser-backend.d.ts.map +1 -0
- package/dist/types/browser-backend.js +9 -0
- package/dist/types/browser-backend.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +54 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +14 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/plan-cache.d.ts +121 -0
- package/dist/types/plan-cache.d.ts.map +1 -0
- package/dist/types/plan-cache.js +9 -0
- package/dist/types/plan-cache.js.map +1 -0
- package/dist/types/profile.d.ts +76 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +35 -0
- package/dist/types/profile.js.map +1 -0
- package/dist/types/session.d.ts +65 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +6 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/tool-manifest.d.ts +52 -0
- package/dist/types/tool-manifest.d.ts.map +1 -0
- package/dist/types/tool-manifest.js +37 -0
- package/dist/types/tool-manifest.js.map +1 -0
- package/dist/utils/atomic-file.d.ts +50 -0
- package/dist/utils/atomic-file.d.ts.map +1 -0
- package/dist/utils/atomic-file.js +217 -0
- package/dist/utils/atomic-file.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-validator.d.ts +40 -0
- package/dist/utils/json-validator.d.ts.map +1 -0
- package/dist/utils/json-validator.js +295 -0
- package/dist/utils/json-validator.js.map +1 -0
- package/dist/utils/ref-id-manager.d.ts +26 -0
- package/dist/utils/ref-id-manager.d.ts.map +1 -0
- package/dist/utils/ref-id-manager.js +81 -0
- package/dist/utils/ref-id-manager.js.map +1 -0
- package/dist/utils/request-queue.d.ts +37 -0
- package/dist/utils/request-queue.d.ts.map +1 -0
- package/dist/utils/request-queue.js +110 -0
- package/dist/utils/request-queue.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config Recovery System
|
|
4
|
+
* Automatic backup, corruption detection, and recovery for .claude.json
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.createBackup = createBackup;
|
|
41
|
+
exports.recoverConfig = recoverConfig;
|
|
42
|
+
exports.recoverFromBackup = recoverFromBackup;
|
|
43
|
+
exports.watchForCorruption = watchForCorruption;
|
|
44
|
+
exports.getRecoveryStatus = getRecoveryStatus;
|
|
45
|
+
exports.performMaintenance = performMaintenance;
|
|
46
|
+
exports.forceBackup = forceBackup;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const atomic_file_1 = require("../utils/atomic-file");
|
|
51
|
+
const json_validator_1 = require("../utils/json-validator");
|
|
52
|
+
const session_isolator_1 = require("./session-isolator");
|
|
53
|
+
/**
|
|
54
|
+
* Create an automatic backup of .claude.json
|
|
55
|
+
* Should be called before any risky operation
|
|
56
|
+
*/
|
|
57
|
+
async function createBackup() {
|
|
58
|
+
const configPath = (0, session_isolator_1.getClaudeConfigPath)();
|
|
59
|
+
if (!fs.existsSync(configPath)) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
return await (0, atomic_file_1.backupFile)(configPath);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Failed to create backup:', error.message);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Recover corrupted .claude.json
|
|
72
|
+
* Attempts multiple recovery strategies
|
|
73
|
+
*/
|
|
74
|
+
async function recoverConfig() {
|
|
75
|
+
const configPath = (0, session_isolator_1.getClaudeConfigPath)();
|
|
76
|
+
// Check if file exists
|
|
77
|
+
if (!fs.existsSync(configPath)) {
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
action: 'none',
|
|
81
|
+
details: 'No config file to recover',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Read and validate current config
|
|
85
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
86
|
+
const validation = (0, json_validator_1.detectCorruption)(content);
|
|
87
|
+
// If valid, nothing to do
|
|
88
|
+
if (validation.valid) {
|
|
89
|
+
return {
|
|
90
|
+
success: true,
|
|
91
|
+
action: 'none',
|
|
92
|
+
details: 'Config is valid, no recovery needed',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Create backup before attempting recovery
|
|
96
|
+
let backupPath = null;
|
|
97
|
+
try {
|
|
98
|
+
backupPath = await (0, atomic_file_1.backupFile)(configPath);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Continue without backup
|
|
102
|
+
}
|
|
103
|
+
// Strategy 1: Try to extract valid JSON from corrupted content
|
|
104
|
+
const extraction = (0, json_validator_1.extractValidJson)(content);
|
|
105
|
+
if (extraction.success && extraction.data) {
|
|
106
|
+
// Validate the extracted data looks like a Claude config
|
|
107
|
+
const configValidation = (0, json_validator_1.validateClaudeConfig)(extraction.data);
|
|
108
|
+
if (configValidation.valid) {
|
|
109
|
+
await (0, atomic_file_1.writeFileAtomicSafe)(configPath, extraction.data);
|
|
110
|
+
return {
|
|
111
|
+
success: true,
|
|
112
|
+
action: 'recovered',
|
|
113
|
+
originalError: validation.error,
|
|
114
|
+
recoveryMethod: extraction.method,
|
|
115
|
+
backupCreated: backupPath ?? undefined,
|
|
116
|
+
details: `Recovered using ${extraction.method}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Strategy 2: Restore from most recent backup
|
|
121
|
+
const backups = (0, atomic_file_1.listBackups)('.claude.json');
|
|
122
|
+
if (backups.length > 0) {
|
|
123
|
+
const backupDir = path.join(os.homedir(), '.claude-chrome-parallel', 'backups');
|
|
124
|
+
for (const backup of backups) {
|
|
125
|
+
const backupFilePath = path.join(backupDir, backup);
|
|
126
|
+
const readResult = await (0, atomic_file_1.readFileSafe)(backupFilePath);
|
|
127
|
+
if (readResult.success && readResult.data) {
|
|
128
|
+
const configValidation = (0, json_validator_1.validateClaudeConfig)(readResult.data);
|
|
129
|
+
if (configValidation.valid) {
|
|
130
|
+
await (0, atomic_file_1.restoreFromBackup)(backupFilePath, configPath);
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
action: 'restored_backup',
|
|
134
|
+
originalError: validation.error,
|
|
135
|
+
recoveryMethod: `restored from backup: ${backup}`,
|
|
136
|
+
backupCreated: backupPath ?? undefined,
|
|
137
|
+
details: `Restored from ${backup}`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Strategy 3: Create new empty config
|
|
144
|
+
await (0, atomic_file_1.writeFileAtomicSafe)(configPath, {});
|
|
145
|
+
return {
|
|
146
|
+
success: true,
|
|
147
|
+
action: 'created_new',
|
|
148
|
+
originalError: validation.error,
|
|
149
|
+
recoveryMethod: 'created_new_empty_config',
|
|
150
|
+
backupCreated: backupPath ?? undefined,
|
|
151
|
+
details: 'Created new empty config (all previous data lost)',
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Restore from a specific backup
|
|
156
|
+
*/
|
|
157
|
+
async function recoverFromBackup(backupName) {
|
|
158
|
+
const configPath = (0, session_isolator_1.getClaudeConfigPath)();
|
|
159
|
+
const backupDir = path.join(os.homedir(), '.claude-chrome-parallel', 'backups');
|
|
160
|
+
const backups = (0, atomic_file_1.listBackups)('.claude.json');
|
|
161
|
+
if (backups.length === 0) {
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
action: 'none',
|
|
165
|
+
details: 'No backups available',
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// Use specified backup or most recent
|
|
169
|
+
const targetBackup = backupName || backups[0];
|
|
170
|
+
const backupPath = path.join(backupDir, targetBackup);
|
|
171
|
+
if (!fs.existsSync(backupPath)) {
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
action: 'none',
|
|
175
|
+
details: `Backup not found: ${targetBackup}`,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// Validate backup content
|
|
179
|
+
const readResult = await (0, atomic_file_1.readFileSafe)(backupPath);
|
|
180
|
+
if (!readResult.success || !readResult.data) {
|
|
181
|
+
return {
|
|
182
|
+
success: false,
|
|
183
|
+
action: 'none',
|
|
184
|
+
details: `Backup is corrupted: ${targetBackup}`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// Create backup of current (corrupted) file
|
|
188
|
+
let currentBackup = null;
|
|
189
|
+
if (fs.existsSync(configPath)) {
|
|
190
|
+
try {
|
|
191
|
+
currentBackup = await (0, atomic_file_1.backupFile)(configPath);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// Continue without backup
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Restore
|
|
198
|
+
await (0, atomic_file_1.restoreFromBackup)(backupPath, configPath);
|
|
199
|
+
return {
|
|
200
|
+
success: true,
|
|
201
|
+
action: 'restored_backup',
|
|
202
|
+
recoveryMethod: `manual restore from ${targetBackup}`,
|
|
203
|
+
backupCreated: currentBackup ?? undefined,
|
|
204
|
+
details: `Restored from ${targetBackup}`,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Watch for corruption and auto-recover
|
|
209
|
+
*/
|
|
210
|
+
function watchForCorruption(options = {}) {
|
|
211
|
+
const { interval = 5000, autoRecover = true, onCorruption, onRecovery, } = options;
|
|
212
|
+
let lastContent = null;
|
|
213
|
+
let stopped = false;
|
|
214
|
+
const check = async () => {
|
|
215
|
+
if (stopped)
|
|
216
|
+
return;
|
|
217
|
+
const configPath = (0, session_isolator_1.getClaudeConfigPath)();
|
|
218
|
+
if (!fs.existsSync(configPath)) {
|
|
219
|
+
lastContent = null;
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
224
|
+
// Skip if content hasn't changed
|
|
225
|
+
if (content === lastContent) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
lastContent = content;
|
|
229
|
+
// Check for corruption
|
|
230
|
+
const validation = (0, json_validator_1.detectCorruption)(content);
|
|
231
|
+
if (!validation.valid && validation.corrupted) {
|
|
232
|
+
onCorruption?.(validation);
|
|
233
|
+
if (autoRecover) {
|
|
234
|
+
const report = await recoverConfig();
|
|
235
|
+
onRecovery?.(report);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
// File might be in use, skip this check
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
// Initial check
|
|
244
|
+
check();
|
|
245
|
+
// Start interval
|
|
246
|
+
const intervalId = setInterval(check, interval);
|
|
247
|
+
return {
|
|
248
|
+
stop: () => {
|
|
249
|
+
stopped = true;
|
|
250
|
+
clearInterval(intervalId);
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get recovery status
|
|
256
|
+
*/
|
|
257
|
+
async function getRecoveryStatus() {
|
|
258
|
+
const configPath = (0, session_isolator_1.getClaudeConfigPath)();
|
|
259
|
+
const backups = (0, atomic_file_1.listBackups)('.claude.json');
|
|
260
|
+
const status = {
|
|
261
|
+
configExists: fs.existsSync(configPath),
|
|
262
|
+
configHealthy: false,
|
|
263
|
+
backupsAvailable: backups.length,
|
|
264
|
+
oldestBackup: backups[backups.length - 1],
|
|
265
|
+
newestBackup: backups[0],
|
|
266
|
+
};
|
|
267
|
+
if (status.configExists) {
|
|
268
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
269
|
+
const validation = (0, json_validator_1.detectCorruption)(content);
|
|
270
|
+
status.configHealthy = validation.valid;
|
|
271
|
+
if (!validation.valid) {
|
|
272
|
+
status.error = validation.error;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
status.configHealthy = true; // No config is technically healthy
|
|
277
|
+
}
|
|
278
|
+
return status;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Perform maintenance: cleanup old backups
|
|
282
|
+
*/
|
|
283
|
+
function performMaintenance(keepBackups = 10) {
|
|
284
|
+
const removed = (0, atomic_file_1.cleanupBackups)('.claude.json', keepBackups);
|
|
285
|
+
return { backupsRemoved: removed };
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Force a backup now (manual trigger)
|
|
289
|
+
*/
|
|
290
|
+
async function forceBackup() {
|
|
291
|
+
try {
|
|
292
|
+
const backupPath = await createBackup();
|
|
293
|
+
if (backupPath) {
|
|
294
|
+
return { success: true, path: backupPath };
|
|
295
|
+
}
|
|
296
|
+
return { success: false, error: 'No config file to backup' };
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
return { success: false, error: error.message };
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=config-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-recovery.js","sourceRoot":"","sources":["../../src/config/config-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global Configuration - Runtime settings for the MCP server
|
|
3
|
+
*/
|
|
4
|
+
export interface GlobalConfig {
|
|
5
|
+
/** Chrome remote debugging port */
|
|
6
|
+
port: number;
|
|
7
|
+
/** Auto-launch Chrome if not running (default: false) */
|
|
8
|
+
autoLaunch: boolean;
|
|
9
|
+
/** Custom user data directory for Chrome (default: uses real Chrome profile on macOS, temp dir elsewhere) */
|
|
10
|
+
userDataDir?: string;
|
|
11
|
+
/** Path to custom Chrome binary (e.g., chrome-headless-shell) */
|
|
12
|
+
chromeBinary?: string;
|
|
13
|
+
/** Use chrome-headless-shell if available (default: false) */
|
|
14
|
+
useHeadlessShell?: boolean;
|
|
15
|
+
/** Chrome Pool settings for managing multiple Chrome instances */
|
|
16
|
+
pool?: {
|
|
17
|
+
/** Enable the Chrome pool (default: true) */
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
/** Maximum number of Chrome instances in the pool (default: 5) */
|
|
20
|
+
maxInstances: number;
|
|
21
|
+
/** Base port for Chrome instances; subsequent instances use basePort+1, +2, etc. (default: 9222) */
|
|
22
|
+
basePort: number;
|
|
23
|
+
};
|
|
24
|
+
/** Hybrid mode settings (Lightpanda + Chrome routing) */
|
|
25
|
+
hybrid?: {
|
|
26
|
+
/** Enable hybrid mode (default: false) */
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
/** Lightpanda debugging port (default: 9223) */
|
|
29
|
+
lightpandaPort: number;
|
|
30
|
+
/** Circuit breaker settings */
|
|
31
|
+
circuitBreaker?: {
|
|
32
|
+
maxFailures?: number;
|
|
33
|
+
cooldownMs?: number;
|
|
34
|
+
};
|
|
35
|
+
/** Cookie sync settings */
|
|
36
|
+
cookieSync?: {
|
|
37
|
+
intervalMs?: number;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get global configuration
|
|
43
|
+
*/
|
|
44
|
+
export declare function getGlobalConfig(): GlobalConfig;
|
|
45
|
+
/**
|
|
46
|
+
* Set global configuration
|
|
47
|
+
*/
|
|
48
|
+
export declare function setGlobalConfig(newConfig: Partial<GlobalConfig>): void;
|
|
49
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../src/config/global.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kEAAkE;IAClE,IAAI,CAAC,EAAE;QACL,6CAA6C;QAC7C,OAAO,EAAE,OAAO,CAAC;QACjB,kEAAkE;QAClE,YAAY,EAAE,MAAM,CAAC;QACrB,oGAAoG;QACpG,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,yDAAyD;IACzD,MAAM,CAAC,EAAE;QACP,0CAA0C;QAC1C,OAAO,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,cAAc,EAAE,MAAM,CAAC;QACvB,+BAA+B;QAC/B,cAAc,CAAC,EAAE;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,2BAA2B;QAC3B,UAAU,CAAC,EAAE;YACX,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;CACH;AAOD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEtE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Global Configuration - Runtime settings for the MCP server
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getGlobalConfig = getGlobalConfig;
|
|
7
|
+
exports.setGlobalConfig = setGlobalConfig;
|
|
8
|
+
const config = {
|
|
9
|
+
port: 9222,
|
|
10
|
+
autoLaunch: false,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Get global configuration
|
|
14
|
+
*/
|
|
15
|
+
function getGlobalConfig() {
|
|
16
|
+
return config;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Set global configuration
|
|
20
|
+
*/
|
|
21
|
+
function setGlobalConfig(newConfig) {
|
|
22
|
+
Object.assign(config, newConfig);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/config/global.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgDH,0CAEC;AAKD,0CAEC;AAjBD,MAAM,MAAM,GAAiB;IAC3B,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAgC;IAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config module exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./session-isolator"), exports);
|
|
21
|
+
__exportStar(require("./config-recovery"), exports);
|
|
22
|
+
__exportStar(require("./global"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,oDAAkC;AAClC,2CAAyB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Isolator
|
|
3
|
+
* Creates isolated configuration environments for each Claude Code session
|
|
4
|
+
* Prevents race conditions by giving each session its own config directory
|
|
5
|
+
*/
|
|
6
|
+
export interface IsolatedSession {
|
|
7
|
+
/** Unique session identifier */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Path to isolated config directory */
|
|
10
|
+
configDir: string;
|
|
11
|
+
/** Path to the .claude.json in isolated directory */
|
|
12
|
+
claudeConfigPath: string;
|
|
13
|
+
/** Original HOME directory */
|
|
14
|
+
originalHome: string;
|
|
15
|
+
/** Creation timestamp */
|
|
16
|
+
createdAt: Date;
|
|
17
|
+
/** Session metadata */
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface SessionIsolatorOptions {
|
|
21
|
+
/** Base directory for sessions (defaults to ~/.claude-chrome-parallel/sessions) */
|
|
22
|
+
baseDir?: string;
|
|
23
|
+
/** Whether to copy existing config (defaults to true) */
|
|
24
|
+
copyExistingConfig?: boolean;
|
|
25
|
+
/** Maximum age for stale sessions in ms (defaults to 24 hours) */
|
|
26
|
+
maxSessionAge?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the path to the user's .claude.json
|
|
30
|
+
*/
|
|
31
|
+
export declare function getClaudeConfigPath(): string;
|
|
32
|
+
/**
|
|
33
|
+
* Create an isolated session environment
|
|
34
|
+
* Each session gets its own directory that acts as HOME for Claude Code
|
|
35
|
+
*/
|
|
36
|
+
export declare function createIsolatedSession(options?: SessionIsolatorOptions): Promise<IsolatedSession>;
|
|
37
|
+
/**
|
|
38
|
+
* Get the config path for a session
|
|
39
|
+
*/
|
|
40
|
+
export declare function getSessionConfigPath(session: IsolatedSession): string;
|
|
41
|
+
/**
|
|
42
|
+
* Get environment variables for running Claude Code in isolated session
|
|
43
|
+
*/
|
|
44
|
+
export declare function getSessionEnvironment(session: IsolatedSession): Record<string, string>;
|
|
45
|
+
/**
|
|
46
|
+
* Clean up an isolated session
|
|
47
|
+
*/
|
|
48
|
+
export declare function cleanupIsolatedSession(session: IsolatedSession, options?: {
|
|
49
|
+
syncBack?: boolean;
|
|
50
|
+
}): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Sync session config changes back to original .claude.json
|
|
53
|
+
* Uses atomic write to prevent corruption
|
|
54
|
+
*/
|
|
55
|
+
export declare function syncSessionConfig(session: IsolatedSession): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* List all active sessions
|
|
58
|
+
*/
|
|
59
|
+
export declare function listSessions(options?: SessionIsolatorOptions): IsolatedSession[];
|
|
60
|
+
/**
|
|
61
|
+
* Clean up stale sessions (older than maxAge)
|
|
62
|
+
*/
|
|
63
|
+
export declare function cleanupStaleSessions(options?: SessionIsolatorOptions): Promise<number>;
|
|
64
|
+
/**
|
|
65
|
+
* Get a session by ID
|
|
66
|
+
*/
|
|
67
|
+
export declare function getSession(sessionId: string, options?: SessionIsolatorOptions): IsolatedSession | null;
|
|
68
|
+
/**
|
|
69
|
+
* Check if original .claude.json needs recovery
|
|
70
|
+
*/
|
|
71
|
+
export declare function checkOriginalConfigHealth(): Promise<{
|
|
72
|
+
healthy: boolean;
|
|
73
|
+
error?: string;
|
|
74
|
+
suggestion?: string;
|
|
75
|
+
}>;
|
|
76
|
+
//# sourceMappingURL=session-isolator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-isolator.d.ts","sourceRoot":"","sources":["../../src/config/session-isolator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,eAAe,CAAC,CA0D1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,GAAE,sBAA2B,GACnC,eAAe,EAAE,CAmCnB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,sBAA2B,GACnC,eAAe,GAAG,IAAI,CAkBxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAyBD"}
|