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,444 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { SESSION_TITLE_MAX_LENGTH, isIdeMetadata, stripIdeMetadata, } from "@yep-anywhere/shared";
|
|
4
|
+
// Claude model context window size (200K tokens)
|
|
5
|
+
const CONTEXT_WINDOW_SIZE = 200_000;
|
|
6
|
+
import { getMessageContent, isConversationEntry, } from "@yep-anywhere/shared";
|
|
7
|
+
import { buildDag, findOrphanedToolUses } from "./dag.js";
|
|
8
|
+
/**
|
|
9
|
+
* Claude-specific session reader for Claude Code JSONL files.
|
|
10
|
+
*
|
|
11
|
+
* Handles Claude's DAG-based conversation structure with parentUuid,
|
|
12
|
+
* agent sessions, orphaned tool detection, and context window tracking.
|
|
13
|
+
*/
|
|
14
|
+
export class ClaudeSessionReader {
|
|
15
|
+
sessionDir;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.sessionDir = options.sessionDir;
|
|
18
|
+
}
|
|
19
|
+
async listSessions(projectId) {
|
|
20
|
+
const summaries = [];
|
|
21
|
+
try {
|
|
22
|
+
const files = await readdir(this.sessionDir);
|
|
23
|
+
// Filter out agent-* files (internal subagent warmup sessions)
|
|
24
|
+
const jsonlFiles = files.filter((f) => f.endsWith(".jsonl") && !f.startsWith("agent-"));
|
|
25
|
+
for (const file of jsonlFiles) {
|
|
26
|
+
const sessionId = file.replace(".jsonl", "");
|
|
27
|
+
const summary = await this.getSessionSummary(sessionId, projectId);
|
|
28
|
+
if (summary) {
|
|
29
|
+
summaries.push(summary);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Directory doesn't exist or not readable
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
// Sort by updatedAt descending
|
|
38
|
+
summaries.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
39
|
+
return summaries;
|
|
40
|
+
}
|
|
41
|
+
async getSessionSummary(sessionId, projectId) {
|
|
42
|
+
const filePath = join(this.sessionDir, `${sessionId}.jsonl`);
|
|
43
|
+
try {
|
|
44
|
+
const content = await readFile(filePath, "utf-8");
|
|
45
|
+
const trimmed = content.trim();
|
|
46
|
+
// Skip empty files
|
|
47
|
+
if (!trimmed) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const lines = trimmed.split("\n");
|
|
51
|
+
const messages = lines
|
|
52
|
+
.map((line) => {
|
|
53
|
+
try {
|
|
54
|
+
return JSON.parse(line);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
.filter((m) => m !== null);
|
|
61
|
+
// Build DAG and get active branch (filters out dead branches from rewinds, etc.)
|
|
62
|
+
const { activeBranch } = buildDag(messages);
|
|
63
|
+
// Filter active branch to user/assistant messages only
|
|
64
|
+
const conversationMessages = activeBranch
|
|
65
|
+
.filter((node) => node.raw.type === "user" || node.raw.type === "assistant")
|
|
66
|
+
.map((node) => node.raw);
|
|
67
|
+
// Skip sessions with no actual conversation messages (metadata-only files).
|
|
68
|
+
// Note: Newly created sessions may not have user/assistant messages yet (SDK writes async).
|
|
69
|
+
// These are handled separately in the projects route by adding owned processes.
|
|
70
|
+
if (conversationMessages.length === 0) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const stats = await stat(filePath);
|
|
74
|
+
const firstUserMessage = this.findFirstUserMessage(messages);
|
|
75
|
+
const fullTitle = firstUserMessage?.trim() || null;
|
|
76
|
+
const contextUsage = this.extractContextUsage(conversationMessages);
|
|
77
|
+
const model = this.extractModel(conversationMessages);
|
|
78
|
+
return {
|
|
79
|
+
id: sessionId,
|
|
80
|
+
projectId,
|
|
81
|
+
title: this.extractTitle(firstUserMessage),
|
|
82
|
+
fullTitle,
|
|
83
|
+
createdAt: stats.birthtime.toISOString(),
|
|
84
|
+
updatedAt: stats.mtime.toISOString(),
|
|
85
|
+
messageCount: conversationMessages.length,
|
|
86
|
+
status: { state: "idle" }, // Will be updated by Supervisor
|
|
87
|
+
contextUsage,
|
|
88
|
+
provider: "claude",
|
|
89
|
+
model,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async getSession(sessionId, projectId, afterMessageId, _options) {
|
|
97
|
+
const summary = await this.getSessionSummary(sessionId, projectId);
|
|
98
|
+
if (!summary)
|
|
99
|
+
return null;
|
|
100
|
+
const filePath = join(this.sessionDir, `${sessionId}.jsonl`);
|
|
101
|
+
const content = await readFile(filePath, "utf-8");
|
|
102
|
+
const lines = content.trim().split("\n");
|
|
103
|
+
const rawMessages = [];
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
try {
|
|
106
|
+
rawMessages.push(JSON.parse(line));
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Skip malformed lines
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Filter messages for incremental fetching if needed
|
|
113
|
+
// Note: Raw messages might not have UUIDs if they are old format or haven't been normalized.
|
|
114
|
+
// But typically they do.
|
|
115
|
+
let finalMessages = rawMessages;
|
|
116
|
+
if (afterMessageId) {
|
|
117
|
+
const afterIndex = rawMessages.findIndex((m) => "uuid" in m && m.uuid === afterMessageId);
|
|
118
|
+
if (afterIndex !== -1) {
|
|
119
|
+
finalMessages = rawMessages.slice(afterIndex + 1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
summary,
|
|
124
|
+
data: {
|
|
125
|
+
provider: "claude",
|
|
126
|
+
session: {
|
|
127
|
+
messages: finalMessages,
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get agent session content for lazy-loading completed Tasks.
|
|
134
|
+
*
|
|
135
|
+
* Agent JSONL files are stored at: {sessionDir}/agent-{agentId}.jsonl
|
|
136
|
+
* They have the same format as parent session JSONL files.
|
|
137
|
+
*
|
|
138
|
+
* @param agentId - The agent session ID (used as filename: agent-{agentId}.jsonl)
|
|
139
|
+
* @returns Agent session with messages and inferred status
|
|
140
|
+
*/
|
|
141
|
+
async getAgentSession(agentId) {
|
|
142
|
+
const filePath = join(this.sessionDir, `agent-${agentId}.jsonl`);
|
|
143
|
+
try {
|
|
144
|
+
const content = await readFile(filePath, "utf-8");
|
|
145
|
+
const trimmed = content.trim();
|
|
146
|
+
if (!trimmed) {
|
|
147
|
+
return { messages: [], status: "pending" };
|
|
148
|
+
}
|
|
149
|
+
const lines = trimmed.split("\n");
|
|
150
|
+
const rawMessages = [];
|
|
151
|
+
for (const line of lines) {
|
|
152
|
+
try {
|
|
153
|
+
rawMessages.push(JSON.parse(line));
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Skip malformed lines
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Build DAG and get active branch (filters out dead branches)
|
|
160
|
+
const { activeBranch } = buildDag(rawMessages);
|
|
161
|
+
// Don't include orphan detection for agent sessions
|
|
162
|
+
// (agents are subprocesses, we don't know their lifecycle)
|
|
163
|
+
const orphanedToolUses = new Set();
|
|
164
|
+
// Convert to Message objects
|
|
165
|
+
const messages = activeBranch.map((node, index) => this.convertMessage(node.raw, index, orphanedToolUses));
|
|
166
|
+
// Infer status from messages
|
|
167
|
+
const status = this.inferAgentStatus(messages);
|
|
168
|
+
return { messages, status };
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// File doesn't exist or not readable - agent is pending
|
|
172
|
+
return { messages: [], status: "pending" };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get mappings of toolUseId → agentId for all agent files in the session directory.
|
|
177
|
+
*
|
|
178
|
+
* This is used to find agent sessions for pending Tasks on page reload.
|
|
179
|
+
* It scans all agent-*.jsonl files and extracts the parent_tool_use_id from
|
|
180
|
+
* the first message or system message.
|
|
181
|
+
*
|
|
182
|
+
* @returns Array of toolUseId → agentId mappings
|
|
183
|
+
*/
|
|
184
|
+
async getAgentMappings() {
|
|
185
|
+
const mappings = [];
|
|
186
|
+
try {
|
|
187
|
+
const files = await readdir(this.sessionDir);
|
|
188
|
+
const agentFiles = files.filter((f) => f.startsWith("agent-") && f.endsWith(".jsonl"));
|
|
189
|
+
for (const file of agentFiles) {
|
|
190
|
+
// Extract agentId from filename: agent-{agentId}.jsonl
|
|
191
|
+
const agentId = file.slice(6, -6); // Remove "agent-" prefix and ".jsonl" suffix
|
|
192
|
+
const filePath = join(this.sessionDir, file);
|
|
193
|
+
try {
|
|
194
|
+
const content = await readFile(filePath, "utf-8");
|
|
195
|
+
const trimmed = content.trim();
|
|
196
|
+
if (!trimmed)
|
|
197
|
+
continue;
|
|
198
|
+
// Check first few lines for parent_tool_use_id
|
|
199
|
+
const lines = trimmed.split("\n").slice(0, 5);
|
|
200
|
+
for (const line of lines) {
|
|
201
|
+
try {
|
|
202
|
+
const msg = JSON.parse(line);
|
|
203
|
+
if (msg.parent_tool_use_id) {
|
|
204
|
+
mappings.push({
|
|
205
|
+
toolUseId: msg.parent_tool_use_id,
|
|
206
|
+
agentId,
|
|
207
|
+
});
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Skip malformed lines
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Skip unreadable files
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Directory doesn't exist or not readable
|
|
223
|
+
}
|
|
224
|
+
return mappings;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Infer agent status from its messages.
|
|
228
|
+
*
|
|
229
|
+
* Status inference:
|
|
230
|
+
* - pending: no messages
|
|
231
|
+
* - failed: last message has is_error or error type
|
|
232
|
+
* - completed: has a 'result' type message
|
|
233
|
+
* - running: has messages but no result (still in progress or interrupted)
|
|
234
|
+
*/
|
|
235
|
+
inferAgentStatus(messages) {
|
|
236
|
+
if (messages.length === 0) {
|
|
237
|
+
return "pending";
|
|
238
|
+
}
|
|
239
|
+
// Look for result message
|
|
240
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
241
|
+
const msg = messages[i];
|
|
242
|
+
if (!msg)
|
|
243
|
+
continue;
|
|
244
|
+
// Check for result type message (SDK's final message)
|
|
245
|
+
if (msg.type === "result") {
|
|
246
|
+
// Check for error in result
|
|
247
|
+
if ("is_error" in msg && msg.is_error === true) {
|
|
248
|
+
return "failed";
|
|
249
|
+
}
|
|
250
|
+
return "completed";
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// No result message - still running or interrupted
|
|
254
|
+
return "running";
|
|
255
|
+
}
|
|
256
|
+
findFirstUserMessage(messages) {
|
|
257
|
+
for (const msg of messages) {
|
|
258
|
+
if (msg.type === "user") {
|
|
259
|
+
const content = msg.message.content;
|
|
260
|
+
if (content) {
|
|
261
|
+
// Content can be string or array of content blocks
|
|
262
|
+
if (typeof content === "string") {
|
|
263
|
+
return this.extractTitleContent(content);
|
|
264
|
+
}
|
|
265
|
+
// Filter to object blocks only (skip string items), cast for compatibility
|
|
266
|
+
const objectBlocks = content.filter((b) => typeof b !== "string");
|
|
267
|
+
return this.extractTitleContent(objectBlocks);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Extract context usage from the last assistant message.
|
|
275
|
+
* Usage data is stored in message.usage with input_tokens, cache_read_input_tokens, etc.
|
|
276
|
+
*/
|
|
277
|
+
extractContextUsage(messages) {
|
|
278
|
+
// Find the last assistant message (iterate backwards)
|
|
279
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
280
|
+
const msg = messages[i];
|
|
281
|
+
if (msg && msg.type === "assistant") {
|
|
282
|
+
const usage = msg.message.usage;
|
|
283
|
+
if (usage) {
|
|
284
|
+
// Total input = fresh tokens + cached tokens + new cache creation
|
|
285
|
+
const inputTokens = (usage.input_tokens ?? 0) +
|
|
286
|
+
(usage.cache_read_input_tokens ?? 0) +
|
|
287
|
+
(usage.cache_creation_input_tokens ?? 0);
|
|
288
|
+
// Skip messages with zero input tokens (incomplete streaming messages)
|
|
289
|
+
if (inputTokens === 0) {
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
const percentage = Math.round((inputTokens / CONTEXT_WINDOW_SIZE) * 100);
|
|
293
|
+
const result = { inputTokens, percentage };
|
|
294
|
+
// Add optional fields if available
|
|
295
|
+
if (usage.output_tokens !== undefined && usage.output_tokens > 0) {
|
|
296
|
+
result.outputTokens = usage.output_tokens;
|
|
297
|
+
}
|
|
298
|
+
if (usage.cache_read_input_tokens !== undefined &&
|
|
299
|
+
usage.cache_read_input_tokens > 0) {
|
|
300
|
+
result.cacheReadTokens = usage.cache_read_input_tokens;
|
|
301
|
+
}
|
|
302
|
+
if (usage.cache_creation_input_tokens !== undefined &&
|
|
303
|
+
usage.cache_creation_input_tokens > 0) {
|
|
304
|
+
result.cacheCreationTokens = usage.cache_creation_input_tokens;
|
|
305
|
+
}
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return undefined;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Extract the model from the first assistant message.
|
|
314
|
+
* The model is stored in message.model (e.g., "claude-opus-4-5-20251101").
|
|
315
|
+
*/
|
|
316
|
+
extractModel(messages) {
|
|
317
|
+
// Find the first assistant message with a model field
|
|
318
|
+
for (const msg of messages) {
|
|
319
|
+
if (msg.type === "assistant") {
|
|
320
|
+
const model = msg.message.model;
|
|
321
|
+
if (model) {
|
|
322
|
+
return model;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
extractTitle(content) {
|
|
329
|
+
if (!content)
|
|
330
|
+
return null;
|
|
331
|
+
const trimmed = content.trim();
|
|
332
|
+
if (trimmed.length <= SESSION_TITLE_MAX_LENGTH)
|
|
333
|
+
return trimmed;
|
|
334
|
+
return `${trimmed.slice(0, SESSION_TITLE_MAX_LENGTH - 3)}...`;
|
|
335
|
+
}
|
|
336
|
+
extractContent(content) {
|
|
337
|
+
if (typeof content === "string")
|
|
338
|
+
return content;
|
|
339
|
+
return content
|
|
340
|
+
.filter((block) => block.type === "text" && typeof block.text === "string")
|
|
341
|
+
.map((block) => block.text)
|
|
342
|
+
.join("\n");
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Extract content for title generation, skipping IDE metadata blocks.
|
|
346
|
+
* This ensures session titles show the actual user message, not IDE metadata
|
|
347
|
+
* like <ide_opened_file> or <ide_selection> tags.
|
|
348
|
+
*/
|
|
349
|
+
extractTitleContent(content) {
|
|
350
|
+
if (typeof content === "string") {
|
|
351
|
+
return stripIdeMetadata(content);
|
|
352
|
+
}
|
|
353
|
+
return content
|
|
354
|
+
.filter((block) => block.type === "text" &&
|
|
355
|
+
typeof block.text === "string" &&
|
|
356
|
+
!isIdeMetadata(block.text))
|
|
357
|
+
.map((block) => block.text)
|
|
358
|
+
.join("\n");
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Get session summary only if the file has changed since the cached values.
|
|
362
|
+
* Used by SessionIndexService for cache invalidation.
|
|
363
|
+
*
|
|
364
|
+
* @param sessionId - The session ID
|
|
365
|
+
* @param projectId - The project ID
|
|
366
|
+
* @param cachedMtime - The mtime (ms since epoch) from the cache
|
|
367
|
+
* @param cachedSize - The file size (bytes) from the cache
|
|
368
|
+
* @returns Summary with file stats if changed, null if unchanged
|
|
369
|
+
*/
|
|
370
|
+
async getSessionSummaryIfChanged(sessionId, projectId, cachedMtime, cachedSize) {
|
|
371
|
+
const filePath = join(this.sessionDir, `${sessionId}.jsonl`);
|
|
372
|
+
try {
|
|
373
|
+
const stats = await stat(filePath);
|
|
374
|
+
const mtime = stats.mtimeMs;
|
|
375
|
+
const size = stats.size;
|
|
376
|
+
// If mtime and size match cached values, return null (no change)
|
|
377
|
+
if (mtime === cachedMtime && size === cachedSize) {
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
380
|
+
// Otherwise parse the file and return { summary, mtime, size }
|
|
381
|
+
const summary = await this.getSessionSummary(sessionId, projectId);
|
|
382
|
+
if (!summary)
|
|
383
|
+
return null;
|
|
384
|
+
return { summary, mtime, size };
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
return null; // File doesn't exist or error
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Convert a raw JSONL message to our Message format.
|
|
392
|
+
*
|
|
393
|
+
* We pass through all fields from JSONL without stripping.
|
|
394
|
+
* This preserves debugging info, DAG structure, and metadata.
|
|
395
|
+
* The only transformation is:
|
|
396
|
+
* - Normalize content blocks (pass through all fields)
|
|
397
|
+
* - Add computed orphanedToolUseIds
|
|
398
|
+
*/
|
|
399
|
+
convertMessage(raw, _index, orphanedToolUses = new Set()) {
|
|
400
|
+
// Normalize content blocks - pass through all fields
|
|
401
|
+
let content;
|
|
402
|
+
const rawContent = getMessageContent(raw);
|
|
403
|
+
if (typeof rawContent === "string") {
|
|
404
|
+
content = rawContent;
|
|
405
|
+
}
|
|
406
|
+
else if (Array.isArray(rawContent)) {
|
|
407
|
+
// Pass through all fields from each content block
|
|
408
|
+
// Filter out string items (which can appear in user message content)
|
|
409
|
+
content = rawContent
|
|
410
|
+
.filter((block) => typeof block !== "string")
|
|
411
|
+
.map((block) => ({ ...block }));
|
|
412
|
+
}
|
|
413
|
+
// Build message by spreading all raw fields, then override with normalized values
|
|
414
|
+
// Use type assertion since we're converting to a looser Message type
|
|
415
|
+
const rawAny = raw;
|
|
416
|
+
const message = {
|
|
417
|
+
...rawAny,
|
|
418
|
+
// Include normalized content if message had content
|
|
419
|
+
...(isConversationEntry(raw) && {
|
|
420
|
+
message: {
|
|
421
|
+
...raw.message,
|
|
422
|
+
...(content !== undefined && { content }),
|
|
423
|
+
},
|
|
424
|
+
}),
|
|
425
|
+
// Ensure type is set
|
|
426
|
+
type: raw.type,
|
|
427
|
+
};
|
|
428
|
+
// Identify orphaned tool_use IDs in this message's content
|
|
429
|
+
if (Array.isArray(content)) {
|
|
430
|
+
const orphanedIds = content
|
|
431
|
+
.filter((b) => b.type === "tool_use" &&
|
|
432
|
+
typeof b.id === "string" &&
|
|
433
|
+
orphanedToolUses.has(b.id))
|
|
434
|
+
.map((b) => b.id);
|
|
435
|
+
if (orphanedIds.length > 0) {
|
|
436
|
+
message.orphanedToolUseIds = orphanedIds;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return message;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/** @deprecated Use ClaudeSessionReader */
|
|
443
|
+
export const SessionReader = ClaudeSessionReader;
|
|
444
|
+
//# sourceMappingURL=reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/sessions/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session reader interface for provider-agnostic session reading.
|
|
3
|
+
*
|
|
4
|
+
* Each provider (Claude, Codex, Gemini) has different JSONL formats,
|
|
5
|
+
* but all readers implement this interface to provide a common API.
|
|
6
|
+
*/
|
|
7
|
+
import type { UnifiedSession, UrlProjectId } from "@yep-anywhere/shared";
|
|
8
|
+
import type { Message, SessionSummary } from "../supervisor/types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Options for reading a session.
|
|
11
|
+
*/
|
|
12
|
+
export interface GetSessionOptions {
|
|
13
|
+
/** Include orphaned tool use detection (default: true, only applicable for Claude) */
|
|
14
|
+
includeOrphans?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface LoadedSession {
|
|
17
|
+
summary: SessionSummary;
|
|
18
|
+
data: UnifiedSession;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Common interface for session readers across providers.
|
|
22
|
+
*
|
|
23
|
+
* Provider-specific readers may have additional methods beyond this interface.
|
|
24
|
+
* For example, ClaudeSessionReader has getAgentSession() for subagent support.
|
|
25
|
+
*/
|
|
26
|
+
export interface ISessionReader {
|
|
27
|
+
/**
|
|
28
|
+
* List all sessions in this reader's session directory.
|
|
29
|
+
*/
|
|
30
|
+
listSessions(projectId: UrlProjectId): Promise<SessionSummary[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Get summary metadata for a single session.
|
|
33
|
+
*/
|
|
34
|
+
getSessionSummary(sessionId: string, projectId: UrlProjectId): Promise<SessionSummary | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Get full session with messages.
|
|
37
|
+
* @param sessionId - The session ID
|
|
38
|
+
* @param projectId - The project ID
|
|
39
|
+
* @param afterMessageId - Only return messages after this ID (for incremental fetching)
|
|
40
|
+
* @param options - Additional options
|
|
41
|
+
*/
|
|
42
|
+
getSession(sessionId: string, projectId: UrlProjectId, afterMessageId?: string, options?: GetSessionOptions): Promise<LoadedSession | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Get session summary only if the file has changed since cached values.
|
|
45
|
+
* Used for cache invalidation.
|
|
46
|
+
*
|
|
47
|
+
* @param sessionId - The session ID
|
|
48
|
+
* @param projectId - The project ID
|
|
49
|
+
* @param cachedMtime - The mtime (ms since epoch) from the cache
|
|
50
|
+
* @param cachedSize - The file size (bytes) from the cache
|
|
51
|
+
* @returns Summary with file stats if changed, null if unchanged
|
|
52
|
+
*/
|
|
53
|
+
getSessionSummaryIfChanged(sessionId: string, projectId: UrlProjectId, cachedMtime: number, cachedSize: number): Promise<{
|
|
54
|
+
summary: SessionSummary;
|
|
55
|
+
mtime: number;
|
|
56
|
+
size: number;
|
|
57
|
+
} | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Get mappings from tool use IDs to agent session IDs.
|
|
60
|
+
* Used for Claude's Task tool to link tool_use to subagent sessions.
|
|
61
|
+
* Non-Claude providers should return an empty array.
|
|
62
|
+
*/
|
|
63
|
+
getAgentMappings(): Promise<{
|
|
64
|
+
toolUseId: string;
|
|
65
|
+
agentId: string;
|
|
66
|
+
}[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Get an agent (subagent) session by ID.
|
|
69
|
+
* Used for Claude's Task tool subagent sessions (agent-*.jsonl files).
|
|
70
|
+
* Non-Claude providers should return null.
|
|
71
|
+
*/
|
|
72
|
+
getAgentSession(agentId: string): Promise<{
|
|
73
|
+
messages: Message[];
|
|
74
|
+
status: string;
|
|
75
|
+
} | null>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAW,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEjE;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,YAAY,EACvB,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEjC;;;;;;;;;OASG;IACH,0BAA0B,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAE5E;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IAEtE;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAC5D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session reader interface for provider-agnostic session reading.
|
|
3
|
+
*
|
|
4
|
+
* Each provider (Claude, Codex, Gemini) has different JSONL formats,
|
|
5
|
+
* but all readers implement this interface to provide a common API.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type DirProjectId, type UrlProjectId } from "@yep-anywhere/shared";
|
|
2
|
+
import type { ProjectScanner } from "../projects/scanner.js";
|
|
3
|
+
import type { EventBus } from "../watcher/EventBus.js";
|
|
4
|
+
import type { Supervisor } from "./Supervisor.js";
|
|
5
|
+
import type { SessionSummary } from "./types.js";
|
|
6
|
+
export interface ExternalSessionTrackerOptions {
|
|
7
|
+
eventBus: EventBus;
|
|
8
|
+
supervisor: Supervisor;
|
|
9
|
+
scanner: ProjectScanner;
|
|
10
|
+
/** Time in ms before external status decays to idle (default: 30000) */
|
|
11
|
+
decayMs?: number;
|
|
12
|
+
/** Grace period in ms after abort before external detection resumes (default: 30000) */
|
|
13
|
+
abortGraceMs?: number;
|
|
14
|
+
/** Optional callback to get session summary for new external sessions */
|
|
15
|
+
getSessionSummary?: (sessionId: string, projectId: UrlProjectId) => Promise<SessionSummary | null>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Tracks sessions that are being modified by external programs (not owned by this app).
|
|
19
|
+
*
|
|
20
|
+
* Uses file change events to detect when a session file is modified, then checks
|
|
21
|
+
* if we own that session via Supervisor. If not owned, marks as "external" until
|
|
22
|
+
* the decay timeout passes with no activity.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ExternalSessionTracker {
|
|
25
|
+
private externalSessions;
|
|
26
|
+
/** Sessions recently aborted by this server - grace period before external detection */
|
|
27
|
+
private recentlyAborted;
|
|
28
|
+
private eventBus;
|
|
29
|
+
private supervisor;
|
|
30
|
+
private scanner;
|
|
31
|
+
private decayMs;
|
|
32
|
+
private abortGraceMs;
|
|
33
|
+
private unsubscribe;
|
|
34
|
+
private getSessionSummary?;
|
|
35
|
+
/** Batches session parsing to prevent OOM from concurrent file reads */
|
|
36
|
+
private sessionParser;
|
|
37
|
+
/** Tracks sessions that have already emitted session-created */
|
|
38
|
+
private createdSessions;
|
|
39
|
+
/** Cache of last known session state for change detection */
|
|
40
|
+
private sessionStateCache;
|
|
41
|
+
constructor(options: ExternalSessionTrackerOptions);
|
|
42
|
+
private handleSessionAborted;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a session is currently marked as external.
|
|
45
|
+
*/
|
|
46
|
+
isExternal(sessionId: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get info about an external session, or null if not external.
|
|
49
|
+
* Returns the directory-format projectId (for internal use only).
|
|
50
|
+
*/
|
|
51
|
+
getExternalSessionInfo(sessionId: string): {
|
|
52
|
+
lastActivity: Date;
|
|
53
|
+
dirProjectId: DirProjectId;
|
|
54
|
+
} | null;
|
|
55
|
+
/**
|
|
56
|
+
* Get info about an external session with URL-format projectId.
|
|
57
|
+
* Use this for API responses and events.
|
|
58
|
+
*/
|
|
59
|
+
getExternalSessionInfoWithUrlId(sessionId: string): Promise<{
|
|
60
|
+
lastActivity: Date;
|
|
61
|
+
projectId: UrlProjectId;
|
|
62
|
+
} | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Mark a session as recently aborted. During the grace period, file changes
|
|
65
|
+
* won't trigger external session detection (they're from our own cleanup).
|
|
66
|
+
* Called by Supervisor when a process is aborted.
|
|
67
|
+
*/
|
|
68
|
+
markAborted(sessionId: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Check if a session is within the abort grace period.
|
|
71
|
+
*/
|
|
72
|
+
private isInAbortGracePeriod;
|
|
73
|
+
/**
|
|
74
|
+
* Get all currently external session IDs.
|
|
75
|
+
*/
|
|
76
|
+
getExternalSessions(): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Clean up resources.
|
|
79
|
+
*/
|
|
80
|
+
dispose(): void;
|
|
81
|
+
private handleFileChange;
|
|
82
|
+
private parseSessionPath;
|
|
83
|
+
private handleCodexFileChange;
|
|
84
|
+
private extractCodexSessionId;
|
|
85
|
+
private readCodexProjectIdFromFile;
|
|
86
|
+
private readCodexSessionMeta;
|
|
87
|
+
private ensureCodexSessionCreated;
|
|
88
|
+
private markExternal;
|
|
89
|
+
private removeExternal;
|
|
90
|
+
private createDecayTimeout;
|
|
91
|
+
private emitStatusChangeByInfo;
|
|
92
|
+
private resolveProjectForSession;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=ExternalSessionTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalSessionTracker.d.ts","sourceRoot":"","sources":["../../src/supervisor/ExternalSessionTracker.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAEV,QAAQ,EAMT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,YAAY,CAAC;AAiBhE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,CAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,YAAY,KACpB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACrC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,gBAAgB,CAA+C;IACvE,wFAAwF;IACxF,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,iBAAiB,CAAC,CAGU;IACpC,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAAwC;IAC7D,gEAAgE;IAChE,OAAO,CAAC,eAAe,CAA0B;IACjD,6DAA6D;IAC7D,OAAO,CAAC,iBAAiB,CAGX;gBAEF,OAAO,EAAE,6BAA6B;IAwHlD,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,GAChB;QAAE,YAAY,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAO5D;;;OAGG;IACG,+BAA+B,CACnC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,YAAY,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC;IAwBlE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,OAAO,IAAI,IAAI;YAiBD,gBAAgB;IA4C9B,OAAO,CAAC,gBAAgB;YAqCV,qBAAqB;IA6BnC,OAAO,CAAC,qBAAqB;YAQf,0BAA0B;YAQ1B,oBAAoB;YAiCpB,yBAAyB;IAqCvC,OAAO,CAAC,YAAY;IAsDpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;YAWZ,sBAAsB;YA0CtB,wBAAwB;CAoBvC"}
|