yepanywhere 0.1.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/bundled/@yep-anywhere/shared/dist/app-types.d.ts +229 -0
- package/bundled/@yep-anywhere/shared/dist/app-types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/app-types.js +46 -0
- package/bundled/@yep-anywhere/shared/dist/app-types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/DocumentContentSchema.d.ts +16 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/DocumentContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/DocumentContentSchema.js +17 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/DocumentContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ImageContentSchema.d.ts +15 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ImageContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ImageContentSchema.js +10 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ImageContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/TextContentSchema.d.ts +6 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/TextContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/TextContentSchema.js +6 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/TextContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ThinkingContentSchema.d.ts +7 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ThinkingContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ThinkingContentSchema.js +7 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ThinkingContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolResultContentSchema.d.ts +24 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolResultContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolResultContentSchema.js +13 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolResultContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolUseContentSchema.d.ts +8 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolUseContentSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolUseContentSchema.js +8 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/content/ToolUseContentSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts +78 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.js +13 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts +18 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js +19 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/FileHistorySnapshotEntrySchema.d.ts +13 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/FileHistorySnapshotEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/FileHistorySnapshotEntrySchema.js +14 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/FileHistorySnapshotEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/QueueOperationEntrySchema.d.ts +68 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/QueueOperationEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/QueueOperationEntrySchema.js +37 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/QueueOperationEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SummaryEntrySchema.d.ts +8 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SummaryEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SummaryEntrySchema.js +7 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SummaryEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts +52 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js +29 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts +72 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.js +10 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/normalizeQueueOperationContent.d.ts +14 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/normalizeQueueOperationContent.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/normalizeQueueOperationContent.js +39 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/normalizeQueueOperationContent.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.d.ts +15 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js +26 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts +566 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.js +39 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/AssistantMessageSchema.d.ts +93 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/AssistantMessageSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/AssistantMessageSchema.js +40 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/AssistantMessageSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/UserMessageSchema.d.ts +105 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/UserMessageSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/UserMessageSchema.js +20 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/message/UserMessageSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/CommonToolSchema.d.ts +53 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/CommonToolSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/CommonToolSchema.js +54 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/CommonToolSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/StructuredPatchSchema.d.ts +9 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/StructuredPatchSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/StructuredPatchSchema.js +9 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/StructuredPatchSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/TodoSchema.d.ts +32 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/TodoSchema.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/TodoSchema.js +12 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/TodoSchema.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts +288 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js +293 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/index.d.ts +83 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/index.js +10 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/types.d.ts +42 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/types.js +11 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/content.d.ts +99 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/content.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/content.js +64 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/content.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts +17 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js +17 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts +600 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js +282 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/types.d.ts +7 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/types.js +6 -0
- package/bundled/@yep-anywhere/shared/dist/codex-schema/types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/dag.d.ts +35 -0
- package/bundled/@yep-anywhere/shared/dist/dag.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/dag.js +75 -0
- package/bundled/@yep-anywhere/shared/dist/dag.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/filePathDetection.d.ts +72 -0
- package/bundled/@yep-anywhere/shared/dist/filePathDetection.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/filePathDetection.js +376 -0
- package/bundled/@yep-anywhere/shared/dist/filePathDetection.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/content.d.ts +95 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/content.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/content.js +57 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/content.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/events.d.ts +174 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/events.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/events.js +117 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/events.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/index.d.ts +18 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/index.js +18 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/session.d.ts +267 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/session.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/session.js +147 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/session.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/types.d.ts +7 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/types.js +6 -0
- package/bundled/@yep-anywhere/shared/dist/gemini-schema/types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.d.ts +30 -0
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.js +58 -0
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/index.d.ts +24 -0
- package/bundled/@yep-anywhere/shared/dist/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/index.js +17 -0
- package/bundled/@yep-anywhere/shared/dist/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts +457 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js +217 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/index.d.ts +23 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/index.js +23 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/session.d.ts +149 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/session.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/session.js +158 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/session.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts +7 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.js +6 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/projectId.d.ts +48 -0
- package/bundled/@yep-anywhere/shared/dist/projectId.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/projectId.js +74 -0
- package/bundled/@yep-anywhere/shared/dist/projectId.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.d.ts +171 -0
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.js +189 -0
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts +31 -0
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.js +2 -0
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/index.d.ts +3 -0
- package/bundled/@yep-anywhere/shared/dist/session/index.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/index.js +2 -0
- package/bundled/@yep-anywhere/shared/dist/session/index.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/types.d.ts +172 -0
- package/bundled/@yep-anywhere/shared/dist/types.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/types.js +33 -0
- package/bundled/@yep-anywhere/shared/dist/types.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/upload.d.ts +58 -0
- package/bundled/@yep-anywhere/shared/dist/upload.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/upload.js +6 -0
- package/bundled/@yep-anywhere/shared/dist/upload.js.map +1 -0
- package/bundled/@yep-anywhere/shared/package.json +7 -0
- package/client-dist/assets/index-C7DeAWG4.css +1 -0
- package/client-dist/assets/index-yX0HPwrz.js +147 -0
- package/client-dist/badge-96.png +0 -0
- package/client-dist/badge.svg +20 -0
- package/client-dist/debug-streaming.html +746 -0
- package/client-dist/favicon.ico +0 -0
- package/client-dist/icon-192.png +0 -0
- package/client-dist/icon-512.png +0 -0
- package/client-dist/icon.svg +27 -0
- package/client-dist/index.html +35 -0
- package/client-dist/manifest.json +23 -0
- package/client-dist/sw.js +482 -0
- package/dist/app.d.ts +67 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +236 -0
- package/dist/app.js.map +1 -0
- package/dist/augments/augment-generator.d.ts +30 -0
- package/dist/augments/augment-generator.d.ts.map +1 -0
- package/dist/augments/augment-generator.js +171 -0
- package/dist/augments/augment-generator.js.map +1 -0
- package/dist/augments/block-detector.d.ts +81 -0
- package/dist/augments/block-detector.d.ts.map +1 -0
- package/dist/augments/block-detector.js +615 -0
- package/dist/augments/block-detector.js.map +1 -0
- package/dist/augments/edit-augments.d.ts +138 -0
- package/dist/augments/edit-augments.d.ts.map +1 -0
- package/dist/augments/edit-augments.js +665 -0
- package/dist/augments/edit-augments.js.map +1 -0
- package/dist/augments/index.d.ts +14 -0
- package/dist/augments/index.d.ts.map +1 -0
- package/dist/augments/index.js +20 -0
- package/dist/augments/index.js.map +1 -0
- package/dist/augments/markdown-augments.d.ts +33 -0
- package/dist/augments/markdown-augments.d.ts.map +1 -0
- package/dist/augments/markdown-augments.js +128 -0
- package/dist/augments/markdown-augments.js.map +1 -0
- package/dist/augments/read-augments.d.ts +40 -0
- package/dist/augments/read-augments.d.ts.map +1 -0
- package/dist/augments/read-augments.js +64 -0
- package/dist/augments/read-augments.js.map +1 -0
- package/dist/augments/stream-coordinator.d.ts +32 -0
- package/dist/augments/stream-coordinator.d.ts.map +1 -0
- package/dist/augments/stream-coordinator.js +115 -0
- package/dist/augments/stream-coordinator.js.map +1 -0
- package/dist/augments/write-augments.d.ts +32 -0
- package/dist/augments/write-augments.d.ts.map +1 -0
- package/dist/augments/write-augments.js +27 -0
- package/dist/augments/write-augments.js.map +1 -0
- package/dist/auth/AuthService.d.ts +98 -0
- package/dist/auth/AuthService.d.ts.map +1 -0
- package/dist/auth/AuthService.js +217 -0
- package/dist/auth/AuthService.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/routes.d.ts +13 -0
- package/dist/auth/routes.d.ts.map +1 -0
- package/dist/auth/routes.js +149 -0
- package/dist/auth/routes.js.map +1 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +152 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +76 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +124 -0
- package/dist/config.js.map +1 -0
- package/dist/dev-mock.d.ts +18 -0
- package/dist/dev-mock.d.ts.map +1 -0
- package/dist/dev-mock.js +260 -0
- package/dist/dev-mock.js.map +1 -0
- package/dist/frontend/index.d.ts +10 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/frontend/index.js +10 -0
- package/dist/frontend/index.js.map +1 -0
- package/dist/frontend/proxy.d.ts +70 -0
- package/dist/frontend/proxy.d.ts.map +1 -0
- package/dist/frontend/proxy.js +329 -0
- package/dist/frontend/proxy.js.map +1 -0
- package/dist/frontend/static.d.ts +16 -0
- package/dist/frontend/static.d.ts.map +1 -0
- package/dist/frontend/static.js +106 -0
- package/dist/frontend/static.js.map +1 -0
- package/dist/highlighting/index.d.ts +43 -0
- package/dist/highlighting/index.d.ts.map +1 -0
- package/dist/highlighting/index.js +224 -0
- package/dist/highlighting/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +259 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes/SessionIndexService.d.ts +106 -0
- package/dist/indexes/SessionIndexService.d.ts.map +1 -0
- package/dist/indexes/SessionIndexService.js +356 -0
- package/dist/indexes/SessionIndexService.js.map +1 -0
- package/dist/indexes/index.d.ts +3 -0
- package/dist/indexes/index.d.ts.map +1 -0
- package/dist/indexes/index.js +2 -0
- package/dist/indexes/index.js.map +1 -0
- package/dist/indexes/types.d.ts +55 -0
- package/dist/indexes/types.d.ts.map +1 -0
- package/dist/indexes/types.js +8 -0
- package/dist/indexes/types.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +2 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +81 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +257 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/maintenance/debug-routes.d.ts +39 -0
- package/dist/maintenance/debug-routes.d.ts.map +1 -0
- package/dist/maintenance/debug-routes.js +561 -0
- package/dist/maintenance/debug-routes.js.map +1 -0
- package/dist/maintenance/index.d.ts +3 -0
- package/dist/maintenance/index.d.ts.map +1 -0
- package/dist/maintenance/index.js +3 -0
- package/dist/maintenance/index.js.map +1 -0
- package/dist/maintenance/server.d.ts +53 -0
- package/dist/maintenance/server.d.ts.map +1 -0
- package/dist/maintenance/server.js +419 -0
- package/dist/maintenance/server.js.map +1 -0
- package/dist/metadata/SessionMetadataService.d.ts +96 -0
- package/dist/metadata/SessionMetadataService.d.ts.map +1 -0
- package/dist/metadata/SessionMetadataService.js +209 -0
- package/dist/metadata/SessionMetadataService.js.map +1 -0
- package/dist/metadata/index.d.ts +2 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +2 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/middleware/auth.d.ts +18 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +53 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/security.d.ts +4 -0
- package/dist/middleware/security.d.ts.map +1 -0
- package/dist/middleware/security.js +28 -0
- package/dist/middleware/security.js.map +1 -0
- package/dist/notifications/NotificationService.d.ts +76 -0
- package/dist/notifications/NotificationService.d.ts.map +1 -0
- package/dist/notifications/NotificationService.js +155 -0
- package/dist/notifications/NotificationService.js.map +1 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +2 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/projects/codex-scanner.d.ts +52 -0
- package/dist/projects/codex-scanner.d.ts.map +1 -0
- package/dist/projects/codex-scanner.js +167 -0
- package/dist/projects/codex-scanner.js.map +1 -0
- package/dist/projects/gemini-project-map.d.ts +54 -0
- package/dist/projects/gemini-project-map.d.ts.map +1 -0
- package/dist/projects/gemini-project-map.js +116 -0
- package/dist/projects/gemini-project-map.js.map +1 -0
- package/dist/projects/gemini-scanner.d.ts +58 -0
- package/dist/projects/gemini-scanner.d.ts.map +1 -0
- package/dist/projects/gemini-scanner.js +210 -0
- package/dist/projects/gemini-scanner.js.map +1 -0
- package/dist/projects/index.d.ts +16 -0
- package/dist/projects/index.d.ts.map +1 -0
- package/dist/projects/index.js +17 -0
- package/dist/projects/index.js.map +1 -0
- package/dist/projects/paths.d.ts +127 -0
- package/dist/projects/paths.d.ts.map +1 -0
- package/dist/projects/paths.js +185 -0
- package/dist/projects/paths.js.map +1 -0
- package/dist/projects/scanner.d.ts +45 -0
- package/dist/projects/scanner.d.ts.map +1 -0
- package/dist/projects/scanner.js +287 -0
- package/dist/projects/scanner.js.map +1 -0
- package/dist/push/PushNotifier.d.ts +48 -0
- package/dist/push/PushNotifier.d.ts.map +1 -0
- package/dist/push/PushNotifier.js +145 -0
- package/dist/push/PushNotifier.js.map +1 -0
- package/dist/push/PushService.d.ts +95 -0
- package/dist/push/PushService.d.ts.map +1 -0
- package/dist/push/PushService.js +245 -0
- package/dist/push/PushService.js.map +1 -0
- package/dist/push/index.d.ts +9 -0
- package/dist/push/index.d.ts.map +1 -0
- package/dist/push/index.js +8 -0
- package/dist/push/index.js.map +1 -0
- package/dist/push/routes.d.ts +10 -0
- package/dist/push/routes.d.ts.map +1 -0
- package/dist/push/routes.js +111 -0
- package/dist/push/routes.js.map +1 -0
- package/dist/push/types.d.ts +80 -0
- package/dist/push/types.d.ts.map +1 -0
- package/dist/push/types.js +5 -0
- package/dist/push/types.js.map +1 -0
- package/dist/push/vapid.d.ts +42 -0
- package/dist/push/vapid.d.ts.map +1 -0
- package/dist/push/vapid.js +132 -0
- package/dist/push/vapid.js.map +1 -0
- package/dist/recents/RecentsService.d.ts +77 -0
- package/dist/recents/RecentsService.d.ts.map +1 -0
- package/dist/recents/RecentsService.js +155 -0
- package/dist/recents/RecentsService.js.map +1 -0
- package/dist/recents/index.d.ts +2 -0
- package/dist/recents/index.d.ts.map +1 -0
- package/dist/recents/index.js +2 -0
- package/dist/recents/index.js.map +1 -0
- package/dist/routes/activity.d.ts +7 -0
- package/dist/routes/activity.d.ts.map +1 -0
- package/dist/routes/activity.js +80 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/beads.d.ts +42 -0
- package/dist/routes/beads.d.ts.map +1 -0
- package/dist/routes/beads.js +101 -0
- package/dist/routes/beads.js.map +1 -0
- package/dist/routes/debug-streaming.d.ts +7 -0
- package/dist/routes/debug-streaming.d.ts.map +1 -0
- package/dist/routes/debug-streaming.js +88 -0
- package/dist/routes/debug-streaming.js.map +1 -0
- package/dist/routes/dev.d.ts +11 -0
- package/dist/routes/dev.d.ts.map +1 -0
- package/dist/routes/dev.js +55 -0
- package/dist/routes/dev.js.map +1 -0
- package/dist/routes/files.d.ts +7 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +429 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/global-sessions.d.ts +76 -0
- package/dist/routes/global-sessions.d.ts.map +1 -0
- package/dist/routes/global-sessions.js +207 -0
- package/dist/routes/global-sessions.js.map +1 -0
- package/dist/routes/health.d.ts +3 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +6 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/inbox.d.ts +45 -0
- package/dist/routes/inbox.d.ts.map +1 -0
- package/dist/routes/inbox.js +174 -0
- package/dist/routes/inbox.js.map +1 -0
- package/dist/routes/processes.d.ts +16 -0
- package/dist/routes/processes.d.ts.map +1 -0
- package/dist/routes/processes.js +82 -0
- package/dist/routes/processes.js.map +1 -0
- package/dist/routes/projects.d.ts +30 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +316 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/providers.d.ts +9 -0
- package/dist/routes/providers.d.ts.map +1 -0
- package/dist/routes/providers.js +63 -0
- package/dist/routes/providers.js.map +1 -0
- package/dist/routes/recents.d.ts +14 -0
- package/dist/routes/recents.d.ts.map +1 -0
- package/dist/routes/recents.js +82 -0
- package/dist/routes/recents.js.map +1 -0
- package/dist/routes/sessions.d.ts +26 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +962 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/stream.d.ts +7 -0
- package/dist/routes/stream.d.ts.map +1 -0
- package/dist/routes/stream.js +561 -0
- package/dist/routes/stream.js.map +1 -0
- package/dist/routes/upload.d.ts +14 -0
- package/dist/routes/upload.d.ts.map +1 -0
- package/dist/routes/upload.js +278 -0
- package/dist/routes/upload.js.map +1 -0
- package/dist/sdk/cli-detection.d.ts +47 -0
- package/dist/sdk/cli-detection.d.ts.map +1 -0
- package/dist/sdk/cli-detection.js +122 -0
- package/dist/sdk/cli-detection.js.map +1 -0
- package/dist/sdk/messageLogger.d.ts +15 -0
- package/dist/sdk/messageLogger.d.ts.map +1 -0
- package/dist/sdk/messageLogger.js +68 -0
- package/dist/sdk/messageLogger.js.map +1 -0
- package/dist/sdk/messageQueue.d.ts +49 -0
- package/dist/sdk/messageQueue.d.ts.map +1 -0
- package/dist/sdk/messageQueue.js +186 -0
- package/dist/sdk/messageQueue.js.map +1 -0
- package/dist/sdk/mock.d.ts +16 -0
- package/dist/sdk/mock.d.ts.map +1 -0
- package/dist/sdk/mock.js +81 -0
- package/dist/sdk/mock.js.map +1 -0
- package/dist/sdk/providers/__mocks__/base.d.ts +78 -0
- package/dist/sdk/providers/__mocks__/base.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/base.js +185 -0
- package/dist/sdk/providers/__mocks__/base.js.map +1 -0
- package/dist/sdk/providers/__mocks__/claude.d.ts +33 -0
- package/dist/sdk/providers/__mocks__/claude.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/claude.js +146 -0
- package/dist/sdk/providers/__mocks__/claude.js.map +1 -0
- package/dist/sdk/providers/__mocks__/codex.d.ts +45 -0
- package/dist/sdk/providers/__mocks__/codex.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/codex.js +160 -0
- package/dist/sdk/providers/__mocks__/codex.js.map +1 -0
- package/dist/sdk/providers/__mocks__/factory.d.ts +40 -0
- package/dist/sdk/providers/__mocks__/factory.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/factory.js +183 -0
- package/dist/sdk/providers/__mocks__/factory.js.map +1 -0
- package/dist/sdk/providers/__mocks__/gemini.d.ts +43 -0
- package/dist/sdk/providers/__mocks__/gemini.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/gemini.js +198 -0
- package/dist/sdk/providers/__mocks__/gemini.js.map +1 -0
- package/dist/sdk/providers/__mocks__/index.d.ts +23 -0
- package/dist/sdk/providers/__mocks__/index.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/index.js +25 -0
- package/dist/sdk/providers/__mocks__/index.js.map +1 -0
- package/dist/sdk/providers/__mocks__/opencode.d.ts +33 -0
- package/dist/sdk/providers/__mocks__/opencode.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/opencode.js +136 -0
- package/dist/sdk/providers/__mocks__/opencode.js.map +1 -0
- package/dist/sdk/providers/__mocks__/types.d.ts +50 -0
- package/dist/sdk/providers/__mocks__/types.d.ts.map +1 -0
- package/dist/sdk/providers/__mocks__/types.js +8 -0
- package/dist/sdk/providers/__mocks__/types.js.map +1 -0
- package/dist/sdk/providers/claude.d.ts +63 -0
- package/dist/sdk/providers/claude.d.ts.map +1 -0
- package/dist/sdk/providers/claude.js +252 -0
- package/dist/sdk/providers/claude.js.map +1 -0
- package/dist/sdk/providers/codex-oss.d.ts +108 -0
- package/dist/sdk/providers/codex-oss.d.ts.map +1 -0
- package/dist/sdk/providers/codex-oss.js +744 -0
- package/dist/sdk/providers/codex-oss.js.map +1 -0
- package/dist/sdk/providers/codex.d.ts +82 -0
- package/dist/sdk/providers/codex.d.ts.map +1 -0
- package/dist/sdk/providers/codex.js +597 -0
- package/dist/sdk/providers/codex.js.map +1 -0
- package/dist/sdk/providers/gemini.d.ts +78 -0
- package/dist/sdk/providers/gemini.d.ts.map +1 -0
- package/dist/sdk/providers/gemini.js +536 -0
- package/dist/sdk/providers/gemini.js.map +1 -0
- package/dist/sdk/providers/index.d.ts +22 -0
- package/dist/sdk/providers/index.d.ts.map +1 -0
- package/dist/sdk/providers/index.js +53 -0
- package/dist/sdk/providers/index.js.map +1 -0
- package/dist/sdk/providers/opencode.d.ts +95 -0
- package/dist/sdk/providers/opencode.d.ts.map +1 -0
- package/dist/sdk/providers/opencode.js +586 -0
- package/dist/sdk/providers/opencode.js.map +1 -0
- package/dist/sdk/providers/types.d.ts +99 -0
- package/dist/sdk/providers/types.d.ts.map +1 -0
- package/dist/sdk/providers/types.js +2 -0
- package/dist/sdk/providers/types.js.map +1 -0
- package/dist/sdk/real.d.ts +20 -0
- package/dist/sdk/real.d.ts.map +1 -0
- package/dist/sdk/real.js +22 -0
- package/dist/sdk/real.js.map +1 -0
- package/dist/sdk/types.d.ts +113 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +3 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sessions/Session.d.ts +80 -0
- package/dist/sessions/Session.d.ts.map +1 -0
- package/dist/sessions/Session.js +119 -0
- package/dist/sessions/Session.js.map +1 -0
- package/dist/sessions/codex-reader.d.ts +166 -0
- package/dist/sessions/codex-reader.d.ts.map +1 -0
- package/dist/sessions/codex-reader.js +664 -0
- package/dist/sessions/codex-reader.js.map +1 -0
- package/dist/sessions/dag.d.ts +62 -0
- package/dist/sessions/dag.d.ts.map +1 -0
- package/dist/sessions/dag.js +175 -0
- package/dist/sessions/dag.js.map +1 -0
- package/dist/sessions/fork.d.ts +34 -0
- package/dist/sessions/fork.d.ts.map +1 -0
- package/dist/sessions/fork.js +58 -0
- package/dist/sessions/fork.js.map +1 -0
- package/dist/sessions/gemini-reader.d.ts +103 -0
- package/dist/sessions/gemini-reader.d.ts.map +1 -0
- package/dist/sessions/gemini-reader.js +332 -0
- package/dist/sessions/gemini-reader.js.map +1 -0
- package/dist/sessions/normalization.d.ts +7 -0
- package/dist/sessions/normalization.d.ts.map +1 -0
- package/dist/sessions/normalization.js +429 -0
- package/dist/sessions/normalization.js.map +1 -0
- package/dist/sessions/opencode-reader.d.ts +99 -0
- package/dist/sessions/opencode-reader.d.ts.map +1 -0
- package/dist/sessions/opencode-reader.js +370 -0
- package/dist/sessions/opencode-reader.js.map +1 -0
- package/dist/sessions/reader.d.ts +118 -0
- package/dist/sessions/reader.d.ts.map +1 -0
- package/dist/sessions/reader.js +444 -0
- package/dist/sessions/reader.js.map +1 -0
- package/dist/sessions/types.d.ts +77 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/supervisor/ExternalSessionTracker.d.ts +94 -0
- package/dist/supervisor/ExternalSessionTracker.d.ts.map +1 -0
- package/dist/supervisor/ExternalSessionTracker.js +507 -0
- package/dist/supervisor/ExternalSessionTracker.js.map +1 -0
- package/dist/supervisor/Process.d.ts +230 -0
- package/dist/supervisor/Process.d.ts.map +1 -0
- package/dist/supervisor/Process.js +878 -0
- package/dist/supervisor/Process.js.map +1 -0
- package/dist/supervisor/Supervisor.d.ts +191 -0
- package/dist/supervisor/Supervisor.d.ts.map +1 -0
- package/dist/supervisor/Supervisor.js +933 -0
- package/dist/supervisor/Supervisor.js.map +1 -0
- package/dist/supervisor/WorkerQueue.d.ts +113 -0
- package/dist/supervisor/WorkerQueue.d.ts.map +1 -0
- package/dist/supervisor/WorkerQueue.js +148 -0
- package/dist/supervisor/WorkerQueue.js.map +1 -0
- package/dist/supervisor/types.d.ts +176 -0
- package/dist/supervisor/types.d.ts.map +1 -0
- package/dist/supervisor/types.js +7 -0
- package/dist/supervisor/types.js.map +1 -0
- package/dist/testing/mockProjectData.d.ts +5 -0
- package/dist/testing/mockProjectData.d.ts.map +1 -0
- package/dist/testing/mockProjectData.js +27 -0
- package/dist/testing/mockProjectData.js.map +1 -0
- package/dist/uploads/index.d.ts +3 -0
- package/dist/uploads/index.d.ts.map +1 -0
- package/dist/uploads/index.js +2 -0
- package/dist/uploads/index.js.map +1 -0
- package/dist/uploads/manager.d.ts +84 -0
- package/dist/uploads/manager.d.ts.map +1 -0
- package/dist/uploads/manager.js +215 -0
- package/dist/uploads/manager.js.map +1 -0
- package/dist/utils/fileLock.d.ts +57 -0
- package/dist/utils/fileLock.d.ts.map +1 -0
- package/dist/utils/fileLock.js +91 -0
- package/dist/utils/fileLock.js.map +1 -0
- package/dist/watcher/BatchProcessor.d.ts +58 -0
- package/dist/watcher/BatchProcessor.d.ts.map +1 -0
- package/dist/watcher/BatchProcessor.js +105 -0
- package/dist/watcher/BatchProcessor.js.map +1 -0
- package/dist/watcher/EventBus.d.ts +157 -0
- package/dist/watcher/EventBus.d.ts.map +1 -0
- package/dist/watcher/EventBus.js +36 -0
- package/dist/watcher/EventBus.js.map +1 -0
- package/dist/watcher/FileWatcher.d.ts +42 -0
- package/dist/watcher/FileWatcher.d.ts.map +1 -0
- package/dist/watcher/FileWatcher.js +165 -0
- package/dist/watcher/FileWatcher.js.map +1 -0
- package/dist/watcher/SourceWatcher.d.ts +36 -0
- package/dist/watcher/SourceWatcher.d.ts.map +1 -0
- package/dist/watcher/SourceWatcher.js +97 -0
- package/dist/watcher/SourceWatcher.js.map +1 -0
- package/dist/watcher/index.d.ts +9 -0
- package/dist/watcher/index.d.ts.map +1 -0
- package/dist/watcher/index.js +5 -0
- package/dist/watcher/index.js.map +1 -0
- package/package.json +54 -0
- package/scripts/postinstall.js +48 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GeminiSessionScanner - Scans Gemini sessions and groups them by project.
|
|
3
|
+
*
|
|
4
|
+
* Gemini stores sessions at ~/.gemini/tmp/<projectHash>/chats/session-*.json
|
|
5
|
+
* where projectHash is a SHA-256 hash of the working directory.
|
|
6
|
+
*
|
|
7
|
+
* We use GeminiProjectMap to resolve project hashes to their original CWDs.
|
|
8
|
+
*/
|
|
9
|
+
import { readFile, readdir, stat } from "node:fs/promises";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
import { basename, join } from "node:path";
|
|
12
|
+
import { parseGeminiSessionFile, } from "@yep-anywhere/shared";
|
|
13
|
+
import { GEMINI_DIR, GEMINI_TMP_DIR, geminiProjectMap, hashProjectPath, } from "./gemini-project-map.js";
|
|
14
|
+
import { encodeProjectId } from "./paths.js";
|
|
15
|
+
// Re-export constants for compatibility
|
|
16
|
+
export { GEMINI_DIR, GEMINI_TMP_DIR, hashProjectPath };
|
|
17
|
+
export class GeminiSessionScanner {
|
|
18
|
+
sessionsDir;
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.sessionsDir = options.sessionsDir ?? GEMINI_TMP_DIR;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register known project paths for hash resolution.
|
|
24
|
+
* Call this with paths from Claude/Codex projects to enable cwd lookup.
|
|
25
|
+
*/
|
|
26
|
+
async registerKnownPaths(paths) {
|
|
27
|
+
for (const path of paths) {
|
|
28
|
+
await geminiProjectMap.register(path);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the hash-to-cwd mapping for use by readers.
|
|
33
|
+
* Note: This is now async as it loads from disk.
|
|
34
|
+
*/
|
|
35
|
+
async getHashToCwd() {
|
|
36
|
+
return geminiProjectMap.getAll();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Scan all Gemini sessions and group them by project (cwd or hash).
|
|
40
|
+
* Returns projects sorted by last activity (most recent first).
|
|
41
|
+
*/
|
|
42
|
+
async listProjects() {
|
|
43
|
+
const sessions = await this.scanAllSessions();
|
|
44
|
+
await geminiProjectMap.load();
|
|
45
|
+
// Group sessions by cwd (if known) or projectHash
|
|
46
|
+
const projectMap = new Map();
|
|
47
|
+
for (const session of sessions) {
|
|
48
|
+
const cwd = await geminiProjectMap.get(session.projectHash);
|
|
49
|
+
const key = cwd ?? session.projectHash;
|
|
50
|
+
const existing = projectMap.get(key);
|
|
51
|
+
if (existing) {
|
|
52
|
+
existing.sessions.push(session);
|
|
53
|
+
if (session.mtime > existing.lastActivity) {
|
|
54
|
+
existing.lastActivity = session.mtime;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
projectMap.set(key, {
|
|
59
|
+
sessions: [session],
|
|
60
|
+
lastActivity: session.mtime,
|
|
61
|
+
cwd: cwd ?? null,
|
|
62
|
+
projectHash: session.projectHash,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Convert to Project[]
|
|
67
|
+
const projects = [];
|
|
68
|
+
for (const [key, data] of projectMap) {
|
|
69
|
+
const path = data.cwd ?? `gemini:${data.projectHash.slice(0, 8)}`;
|
|
70
|
+
const name = data.cwd
|
|
71
|
+
? basename(data.cwd)
|
|
72
|
+
: `Gemini ${data.projectHash.slice(0, 8)}`;
|
|
73
|
+
projects.push({
|
|
74
|
+
id: encodeProjectId(path),
|
|
75
|
+
path,
|
|
76
|
+
name,
|
|
77
|
+
sessionCount: data.sessions.length,
|
|
78
|
+
sessionDir: join(this.sessionsDir, data.projectHash, "chats"),
|
|
79
|
+
activeOwnedCount: 0,
|
|
80
|
+
activeExternalCount: 0,
|
|
81
|
+
lastActivity: new Date(data.lastActivity).toISOString(),
|
|
82
|
+
provider: "gemini",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Sort by last activity descending
|
|
86
|
+
projects.sort((a, b) => {
|
|
87
|
+
if (!a.lastActivity)
|
|
88
|
+
return 1;
|
|
89
|
+
if (!b.lastActivity)
|
|
90
|
+
return -1;
|
|
91
|
+
return (new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime());
|
|
92
|
+
});
|
|
93
|
+
return projects;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get sessions for a specific project (by cwd or projectHash).
|
|
97
|
+
*/
|
|
98
|
+
async getSessionsForProject(projectPath) {
|
|
99
|
+
const sessions = await this.scanAllSessions();
|
|
100
|
+
await geminiProjectMap.load();
|
|
101
|
+
// Check if projectPath is a hash prefix (gemini:xxxxxxxx format)
|
|
102
|
+
if (projectPath.startsWith("gemini:")) {
|
|
103
|
+
const hashPrefix = projectPath.slice(7);
|
|
104
|
+
return sessions
|
|
105
|
+
.filter((s) => s.projectHash.startsWith(hashPrefix))
|
|
106
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
107
|
+
}
|
|
108
|
+
// Otherwise, hash the path and look for matching sessions
|
|
109
|
+
const targetHash = hashProjectPath(projectPath);
|
|
110
|
+
// Ensure we have this path registered
|
|
111
|
+
await geminiProjectMap.set(targetHash, projectPath);
|
|
112
|
+
return sessions
|
|
113
|
+
.filter((s) => s.projectHash === targetHash)
|
|
114
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Scan all session files and extract metadata.
|
|
118
|
+
*/
|
|
119
|
+
async scanAllSessions() {
|
|
120
|
+
const sessions = [];
|
|
121
|
+
try {
|
|
122
|
+
await stat(this.sessionsDir);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
// Find all project hash directories
|
|
128
|
+
let projectHashDirs;
|
|
129
|
+
try {
|
|
130
|
+
const entries = await readdir(this.sessionsDir, { withFileTypes: true });
|
|
131
|
+
projectHashDirs = entries
|
|
132
|
+
.filter((e) => e.isDirectory())
|
|
133
|
+
.map((e) => e.name);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
// Scan each project hash directory in parallel
|
|
139
|
+
const BATCH_SIZE = 20;
|
|
140
|
+
for (let i = 0; i < projectHashDirs.length; i += BATCH_SIZE) {
|
|
141
|
+
const batch = projectHashDirs.slice(i, i + BATCH_SIZE);
|
|
142
|
+
const results = await Promise.all(batch.map((hash) => this.scanProjectHash(hash)));
|
|
143
|
+
for (const result of results) {
|
|
144
|
+
sessions.push(...result);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return sessions;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Scan sessions for a specific project hash directory.
|
|
151
|
+
*/
|
|
152
|
+
async scanProjectHash(projectHash) {
|
|
153
|
+
const sessions = [];
|
|
154
|
+
const chatsDir = join(this.sessionsDir, projectHash, "chats");
|
|
155
|
+
try {
|
|
156
|
+
await stat(chatsDir);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
let files;
|
|
162
|
+
try {
|
|
163
|
+
const entries = await readdir(chatsDir, { withFileTypes: true });
|
|
164
|
+
files = entries
|
|
165
|
+
.filter((e) => e.isFile() &&
|
|
166
|
+
e.name.startsWith("session-") &&
|
|
167
|
+
e.name.endsWith(".json"))
|
|
168
|
+
.map((e) => e.name);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
// Read session files in parallel
|
|
174
|
+
const results = await Promise.all(files.map((f) => this.readSessionMeta(join(chatsDir, f), projectHash)));
|
|
175
|
+
for (const result of results) {
|
|
176
|
+
if (result) {
|
|
177
|
+
sessions.push(result);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return sessions;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Read session metadata from a JSON file.
|
|
184
|
+
*/
|
|
185
|
+
async readSessionMeta(filePath, projectHash) {
|
|
186
|
+
try {
|
|
187
|
+
const stats = await stat(filePath);
|
|
188
|
+
const content = await readFile(filePath, "utf-8");
|
|
189
|
+
const session = parseGeminiSessionFile(content);
|
|
190
|
+
if (!session)
|
|
191
|
+
return null;
|
|
192
|
+
// Note: Inference from tool calls is no longer needed here as we use the
|
|
193
|
+
// explicit project map. We could revive it as a fallback if needed,
|
|
194
|
+
// but simpler is better.
|
|
195
|
+
return {
|
|
196
|
+
id: session.sessionId,
|
|
197
|
+
projectHash,
|
|
198
|
+
filePath,
|
|
199
|
+
startTime: session.startTime,
|
|
200
|
+
mtime: stats.mtimeMs,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Singleton for convenience
|
|
209
|
+
export const geminiSessionScanner = new GeminiSessionScanner();
|
|
210
|
+
//# sourceMappingURL=gemini-scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-scanner.js","sourceRoot":"","sources":["../../src/projects/gemini-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project management utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides tools for working with Claude's project and session
|
|
5
|
+
* storage in ~/.claude/projects/.
|
|
6
|
+
*
|
|
7
|
+
* Key exports:
|
|
8
|
+
* - Path encoding/decoding utilities (see paths.ts for detailed docs)
|
|
9
|
+
* - ProjectScanner for discovering projects
|
|
10
|
+
*/
|
|
11
|
+
export { CLAUDE_DIR, CLAUDE_PROJECTS_DIR, decodeProjectId, encodeProjectId, getFileTypeFromRelativePath, getProjectName, getSessionFilePath, getSessionIdFromPath, readCwdFromSessionFile, } from "./paths.js";
|
|
12
|
+
export { ProjectScanner, projectScanner } from "./scanner.js";
|
|
13
|
+
export type { ScannerOptions } from "./scanner.js";
|
|
14
|
+
export { CODEX_DIR, CODEX_SESSIONS_DIR, CodexSessionScanner, codexSessionScanner, } from "./codex-scanner.js";
|
|
15
|
+
export type { CodexScannerOptions } from "./codex-scanner.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project management utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides tools for working with Claude's project and session
|
|
5
|
+
* storage in ~/.claude/projects/.
|
|
6
|
+
*
|
|
7
|
+
* Key exports:
|
|
8
|
+
* - Path encoding/decoding utilities (see paths.ts for detailed docs)
|
|
9
|
+
* - ProjectScanner for discovering projects
|
|
10
|
+
*/
|
|
11
|
+
// Path utilities - see paths.ts for comprehensive documentation on encoding schemes
|
|
12
|
+
export { CLAUDE_DIR, CLAUDE_PROJECTS_DIR, decodeProjectId, encodeProjectId, getFileTypeFromRelativePath, getProjectName, getSessionFilePath, getSessionIdFromPath, readCwdFromSessionFile, } from "./paths.js";
|
|
13
|
+
// Project scanning
|
|
14
|
+
export { ProjectScanner, projectScanner } from "./scanner.js";
|
|
15
|
+
// Codex session scanning
|
|
16
|
+
export { CODEX_DIR, CODEX_SESSIONS_DIR, CodexSessionScanner, codexSessionScanner, } from "./codex-scanner.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9D,yBAAyB;AACzB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Path Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module handles the different path encoding schemes used in Claude's
|
|
5
|
+
* session storage. There are TWO different encodings to be aware of:
|
|
6
|
+
*
|
|
7
|
+
* ## 1. Project ID (used in URLs/API)
|
|
8
|
+
*
|
|
9
|
+
* The `projectId` is a **base64url** encoding of the absolute project path.
|
|
10
|
+
* Example: `/home/user/my-project` → `L2hvbWUvdXNlci9teS1wcm9qZWN0`
|
|
11
|
+
*
|
|
12
|
+
* This encoding is:
|
|
13
|
+
* - Reversible via `decodeProjectId()`
|
|
14
|
+
* - URL-safe (no special characters)
|
|
15
|
+
* - Used in API routes and client URLs
|
|
16
|
+
*
|
|
17
|
+
* ## 2. Directory Names (in ~/.claude/projects/)
|
|
18
|
+
*
|
|
19
|
+
* Session files are stored in directories with **slash-to-hyphen** encoding.
|
|
20
|
+
* Example: `/home/user/my-project` → `-home-user-my-project`
|
|
21
|
+
*
|
|
22
|
+
* The directory structure is:
|
|
23
|
+
* ```
|
|
24
|
+
* ~/.claude/projects/
|
|
25
|
+
* ├── -home-user-project/ # Direct encoding (no hostname)
|
|
26
|
+
* │ └── session-123.jsonl
|
|
27
|
+
* └── hostname/ # With hostname prefix
|
|
28
|
+
* └── -home-user-project/
|
|
29
|
+
* └── session-456.jsonl
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ## Why Two Encodings?
|
|
33
|
+
*
|
|
34
|
+
* The slash-to-hyphen encoding is **LOSSY** - you cannot reliably decode it
|
|
35
|
+
* back to the original path because hyphens in the original path create
|
|
36
|
+
* ambiguity:
|
|
37
|
+
*
|
|
38
|
+
* Directory: `-home-user-name-my-project`
|
|
39
|
+
* Could be: `/home/user-name/my-project`
|
|
40
|
+
* or: `/home/user/name-my-project`
|
|
41
|
+
* or: `/home/user/name/my-project`
|
|
42
|
+
*
|
|
43
|
+
* ## The Solution: Read CWD from Session Files
|
|
44
|
+
*
|
|
45
|
+
* Instead of decoding directory names, we read the actual project path from
|
|
46
|
+
* the `cwd` field in session JSONL files. This is reliable because the Claude
|
|
47
|
+
* SDK writes the working directory to session files when they're created.
|
|
48
|
+
*
|
|
49
|
+
* See `ProjectScanner.getProjectPathFromSessions()` for the implementation.
|
|
50
|
+
*
|
|
51
|
+
* ## Best Practices
|
|
52
|
+
*
|
|
53
|
+
* 1. Always use `Project.path` for the absolute path - never try to decode
|
|
54
|
+
* directory names.
|
|
55
|
+
* 2. Use `projectId` (base64url) for API calls and URLs.
|
|
56
|
+
* 3. Use `Project.sessionDir` to access the session files directory.
|
|
57
|
+
* 4. Use `getSessionFilePath()` to construct paths to specific session files.
|
|
58
|
+
*/
|
|
59
|
+
import type { UrlProjectId } from "@yep-anywhere/shared";
|
|
60
|
+
/** The root directory where Claude stores project sessions */
|
|
61
|
+
export declare const CLAUDE_DIR: string;
|
|
62
|
+
export declare const CLAUDE_PROJECTS_DIR: string;
|
|
63
|
+
/**
|
|
64
|
+
* Encode an absolute project path to a projectId (base64url).
|
|
65
|
+
* This is reversible via `decodeProjectId()`.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* encodeProjectId("/home/user/my-project")
|
|
69
|
+
* // => "L2hvbWUvdXNlci9teS1wcm9qZWN0"
|
|
70
|
+
*/
|
|
71
|
+
export declare function encodeProjectId(path: string): UrlProjectId;
|
|
72
|
+
/**
|
|
73
|
+
* Decode a projectId back to an absolute project path.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* decodeProjectId("L2hvbWUvdXNlci9teS1wcm9qZWN0")
|
|
77
|
+
* // => "/home/user/my-project"
|
|
78
|
+
*/
|
|
79
|
+
export declare function decodeProjectId(id: UrlProjectId): string;
|
|
80
|
+
/**
|
|
81
|
+
* Get the name (basename) of a project from its path.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* getProjectName("/home/user/my-project")
|
|
85
|
+
* // => "my-project"
|
|
86
|
+
*/
|
|
87
|
+
export declare function getProjectName(projectPath: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Get the full path to a session file.
|
|
90
|
+
*
|
|
91
|
+
* @param sessionDir - The project's session directory (Project.sessionDir)
|
|
92
|
+
* @param sessionId - The session ID (filename without .jsonl)
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* getSessionFilePath("/home/user/.claude/projects/-home-user-proj", "abc123")
|
|
96
|
+
* // => "/home/user/.claude/projects/-home-user-proj/abc123.jsonl"
|
|
97
|
+
*/
|
|
98
|
+
export declare function getSessionFilePath(sessionDir: string, sessionId: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* Extract the session ID from a file path.
|
|
101
|
+
* Works with both absolute paths and relative paths.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* getSessionIdFromPath("/path/to/projects/xxx/my-session.jsonl")
|
|
105
|
+
* // => "my-session"
|
|
106
|
+
*
|
|
107
|
+
* getSessionIdFromPath("projects/xxx/my-session.jsonl")
|
|
108
|
+
* // => "my-session"
|
|
109
|
+
*/
|
|
110
|
+
export declare function getSessionIdFromPath(filePath: string): string | null;
|
|
111
|
+
/**
|
|
112
|
+
* Read the working directory (cwd) from a session file.
|
|
113
|
+
* This is the most reliable way to get the actual project path.
|
|
114
|
+
*
|
|
115
|
+
* The cwd is stored in the first few lines of the JSONL file by the Claude SDK.
|
|
116
|
+
*
|
|
117
|
+
* @param sessionFilePath - Absolute path to the session .jsonl file
|
|
118
|
+
* @returns The cwd field value, or null if not found
|
|
119
|
+
*/
|
|
120
|
+
export declare function readCwdFromSessionFile(sessionFilePath: string): Promise<string | null>;
|
|
121
|
+
/**
|
|
122
|
+
* Determine the file type from a relative path within ~/.claude.
|
|
123
|
+
*
|
|
124
|
+
* @param relativePath - Path relative to ~/.claude (e.g., "projects/xxx/session.jsonl")
|
|
125
|
+
*/
|
|
126
|
+
export declare function getFileTypeFromRelativePath(relativePath: string): "session" | "agent-session" | "settings" | "credentials" | "telemetry" | "other";
|
|
127
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/projects/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,8DAA8D;AAC9D,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,mBAAmB,QAA+B,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,GAElB,SAAS,GACT,eAAe,GACf,UAAU,GACV,aAAa,GACb,WAAW,GACX,OAAO,CA6BV"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Path Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module handles the different path encoding schemes used in Claude's
|
|
5
|
+
* session storage. There are TWO different encodings to be aware of:
|
|
6
|
+
*
|
|
7
|
+
* ## 1. Project ID (used in URLs/API)
|
|
8
|
+
*
|
|
9
|
+
* The `projectId` is a **base64url** encoding of the absolute project path.
|
|
10
|
+
* Example: `/home/user/my-project` → `L2hvbWUvdXNlci9teS1wcm9qZWN0`
|
|
11
|
+
*
|
|
12
|
+
* This encoding is:
|
|
13
|
+
* - Reversible via `decodeProjectId()`
|
|
14
|
+
* - URL-safe (no special characters)
|
|
15
|
+
* - Used in API routes and client URLs
|
|
16
|
+
*
|
|
17
|
+
* ## 2. Directory Names (in ~/.claude/projects/)
|
|
18
|
+
*
|
|
19
|
+
* Session files are stored in directories with **slash-to-hyphen** encoding.
|
|
20
|
+
* Example: `/home/user/my-project` → `-home-user-my-project`
|
|
21
|
+
*
|
|
22
|
+
* The directory structure is:
|
|
23
|
+
* ```
|
|
24
|
+
* ~/.claude/projects/
|
|
25
|
+
* ├── -home-user-project/ # Direct encoding (no hostname)
|
|
26
|
+
* │ └── session-123.jsonl
|
|
27
|
+
* └── hostname/ # With hostname prefix
|
|
28
|
+
* └── -home-user-project/
|
|
29
|
+
* └── session-456.jsonl
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ## Why Two Encodings?
|
|
33
|
+
*
|
|
34
|
+
* The slash-to-hyphen encoding is **LOSSY** - you cannot reliably decode it
|
|
35
|
+
* back to the original path because hyphens in the original path create
|
|
36
|
+
* ambiguity:
|
|
37
|
+
*
|
|
38
|
+
* Directory: `-home-user-name-my-project`
|
|
39
|
+
* Could be: `/home/user-name/my-project`
|
|
40
|
+
* or: `/home/user/name-my-project`
|
|
41
|
+
* or: `/home/user/name/my-project`
|
|
42
|
+
*
|
|
43
|
+
* ## The Solution: Read CWD from Session Files
|
|
44
|
+
*
|
|
45
|
+
* Instead of decoding directory names, we read the actual project path from
|
|
46
|
+
* the `cwd` field in session JSONL files. This is reliable because the Claude
|
|
47
|
+
* SDK writes the working directory to session files when they're created.
|
|
48
|
+
*
|
|
49
|
+
* See `ProjectScanner.getProjectPathFromSessions()` for the implementation.
|
|
50
|
+
*
|
|
51
|
+
* ## Best Practices
|
|
52
|
+
*
|
|
53
|
+
* 1. Always use `Project.path` for the absolute path - never try to decode
|
|
54
|
+
* directory names.
|
|
55
|
+
* 2. Use `projectId` (base64url) for API calls and URLs.
|
|
56
|
+
* 3. Use `Project.sessionDir` to access the session files directory.
|
|
57
|
+
* 4. Use `getSessionFilePath()` to construct paths to specific session files.
|
|
58
|
+
*/
|
|
59
|
+
import { readFile } from "node:fs/promises";
|
|
60
|
+
import { homedir } from "node:os";
|
|
61
|
+
import { basename, join } from "node:path";
|
|
62
|
+
/** The root directory where Claude stores project sessions */
|
|
63
|
+
export const CLAUDE_DIR = join(homedir(), ".claude");
|
|
64
|
+
export const CLAUDE_PROJECTS_DIR = join(CLAUDE_DIR, "projects");
|
|
65
|
+
/**
|
|
66
|
+
* Encode an absolute project path to a projectId (base64url).
|
|
67
|
+
* This is reversible via `decodeProjectId()`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* encodeProjectId("/home/user/my-project")
|
|
71
|
+
* // => "L2hvbWUvdXNlci9teS1wcm9qZWN0"
|
|
72
|
+
*/
|
|
73
|
+
export function encodeProjectId(path) {
|
|
74
|
+
return Buffer.from(path).toString("base64url");
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Decode a projectId back to an absolute project path.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* decodeProjectId("L2hvbWUvdXNlci9teS1wcm9qZWN0")
|
|
81
|
+
* // => "/home/user/my-project"
|
|
82
|
+
*/
|
|
83
|
+
export function decodeProjectId(id) {
|
|
84
|
+
return Buffer.from(id, "base64url").toString("utf-8");
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the name (basename) of a project from its path.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* getProjectName("/home/user/my-project")
|
|
91
|
+
* // => "my-project"
|
|
92
|
+
*/
|
|
93
|
+
export function getProjectName(projectPath) {
|
|
94
|
+
return basename(projectPath);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the full path to a session file.
|
|
98
|
+
*
|
|
99
|
+
* @param sessionDir - The project's session directory (Project.sessionDir)
|
|
100
|
+
* @param sessionId - The session ID (filename without .jsonl)
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* getSessionFilePath("/home/user/.claude/projects/-home-user-proj", "abc123")
|
|
104
|
+
* // => "/home/user/.claude/projects/-home-user-proj/abc123.jsonl"
|
|
105
|
+
*/
|
|
106
|
+
export function getSessionFilePath(sessionDir, sessionId) {
|
|
107
|
+
return join(sessionDir, `${sessionId}.jsonl`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Extract the session ID from a file path.
|
|
111
|
+
* Works with both absolute paths and relative paths.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* getSessionIdFromPath("/path/to/projects/xxx/my-session.jsonl")
|
|
115
|
+
* // => "my-session"
|
|
116
|
+
*
|
|
117
|
+
* getSessionIdFromPath("projects/xxx/my-session.jsonl")
|
|
118
|
+
* // => "my-session"
|
|
119
|
+
*/
|
|
120
|
+
export function getSessionIdFromPath(filePath) {
|
|
121
|
+
const match = filePath.match(/([^/\\]+)\.jsonl$/);
|
|
122
|
+
return match?.[1] ?? null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Read the working directory (cwd) from a session file.
|
|
126
|
+
* This is the most reliable way to get the actual project path.
|
|
127
|
+
*
|
|
128
|
+
* The cwd is stored in the first few lines of the JSONL file by the Claude SDK.
|
|
129
|
+
*
|
|
130
|
+
* @param sessionFilePath - Absolute path to the session .jsonl file
|
|
131
|
+
* @returns The cwd field value, or null if not found
|
|
132
|
+
*/
|
|
133
|
+
export async function readCwdFromSessionFile(sessionFilePath) {
|
|
134
|
+
try {
|
|
135
|
+
const content = await readFile(sessionFilePath, { encoding: "utf-8" });
|
|
136
|
+
const lines = content.split("\n").slice(0, 20); // Check first 20 lines
|
|
137
|
+
for (const line of lines) {
|
|
138
|
+
if (!line.trim())
|
|
139
|
+
continue;
|
|
140
|
+
try {
|
|
141
|
+
const data = JSON.parse(line);
|
|
142
|
+
if (data.cwd && typeof data.cwd === "string") {
|
|
143
|
+
return data.cwd;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Skip invalid JSON lines
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Determine the file type from a relative path within ~/.claude.
|
|
158
|
+
*
|
|
159
|
+
* @param relativePath - Path relative to ~/.claude (e.g., "projects/xxx/session.jsonl")
|
|
160
|
+
*/
|
|
161
|
+
export function getFileTypeFromRelativePath(relativePath) {
|
|
162
|
+
// Session files: projects/<encoded-path>/<session-id>.jsonl
|
|
163
|
+
if (relativePath.includes("projects/") && relativePath.endsWith(".jsonl")) {
|
|
164
|
+
const filename = basename(relativePath);
|
|
165
|
+
if (filename.startsWith("agent-")) {
|
|
166
|
+
return "agent-session";
|
|
167
|
+
}
|
|
168
|
+
return "session";
|
|
169
|
+
}
|
|
170
|
+
// Settings file
|
|
171
|
+
if (relativePath === "settings.json") {
|
|
172
|
+
return "settings";
|
|
173
|
+
}
|
|
174
|
+
// Credentials
|
|
175
|
+
if (relativePath === "credentials.json" ||
|
|
176
|
+
relativePath.includes("credentials")) {
|
|
177
|
+
return "credentials";
|
|
178
|
+
}
|
|
179
|
+
// Telemetry (statsig, analytics)
|
|
180
|
+
if (relativePath.startsWith("statsig/")) {
|
|
181
|
+
return "telemetry";
|
|
182
|
+
}
|
|
183
|
+
return "other";
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/projects/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Project } from "../supervisor/types.js";
|
|
2
|
+
export interface ScannerOptions {
|
|
3
|
+
projectsDir?: string;
|
|
4
|
+
codexSessionsDir?: string;
|
|
5
|
+
geminiSessionsDir?: string;
|
|
6
|
+
enableCodex?: boolean;
|
|
7
|
+
enableGemini?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class ProjectScanner {
|
|
10
|
+
private projectsDir;
|
|
11
|
+
private codexScanner;
|
|
12
|
+
private geminiScanner;
|
|
13
|
+
private enableCodex;
|
|
14
|
+
private enableGemini;
|
|
15
|
+
constructor(options?: ScannerOptions);
|
|
16
|
+
listProjects(): Promise<Project[]>;
|
|
17
|
+
getProject(projectId: string): Promise<Project | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Get a project by ID, or create a virtual project entry if the path exists on disk
|
|
20
|
+
* but hasn't been used with Claude yet.
|
|
21
|
+
*
|
|
22
|
+
* This allows starting sessions in new directories without requiring prior Claude usage.
|
|
23
|
+
*/
|
|
24
|
+
getOrCreateProject(projectId: string, preferredProvider?: "claude" | "codex" | "gemini"): Promise<Project | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Find a project by matching the session directory suffix.
|
|
27
|
+
*
|
|
28
|
+
* This is used by ExternalSessionTracker which extracts the directory-based
|
|
29
|
+
* project identifier from file paths (e.g., "-home-user-project" or
|
|
30
|
+
* "hostname/-home-user-project") rather than the base64url-encoded projectId.
|
|
31
|
+
*/
|
|
32
|
+
getProjectBySessionDirSuffix(dirSuffix: string): Promise<Project | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Get the actual project path by reading the cwd from a session file.
|
|
35
|
+
*
|
|
36
|
+
* NOTE: This is necessary because the directory names use a lossy
|
|
37
|
+
* slash-to-hyphen encoding that cannot be reversed reliably.
|
|
38
|
+
* See packages/server/src/projects/paths.ts for full documentation.
|
|
39
|
+
*/
|
|
40
|
+
private getProjectPathFromSessions;
|
|
41
|
+
private countSessions;
|
|
42
|
+
private getLastActivity;
|
|
43
|
+
}
|
|
44
|
+
export declare const projectScanner: ProjectScanner;
|
|
45
|
+
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/projects/scanner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAUtD,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,GAAE,cAAmB;IAgBlC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAiHlC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAK5D;;;;;OAKG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAChD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IA6E1B;;;;;;OAMG;IACG,4BAA4B,CAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQ1B;;;;;;OAMG;YACW,0BAA0B;YA0B1B,aAAa;YAYb,eAAe;CAwB9B;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|