yepanywhere 0.5.2 → 0.6.1
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/README.md +21 -5
- package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts +9 -0
- package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/agent-context.js +18 -0
- package/bundled/@yep-anywhere/shared/dist/agent-context.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/app-types.d.ts +107 -1
- package/bundled/@yep-anywhere/shared/dist/app-types.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/app-types.js +4 -0
- package/bundled/@yep-anywhere/shared/dist/app-types.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts +4 -1
- package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/binary-framing.js +8 -3
- package/bundled/@yep-anywhere/shared/dist/binary-framing.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts +4 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts +4 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js +7 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts +4 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts +64 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js +9 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts +4 -0
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js +45 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts +144 -2
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts +6 -4
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js +8 -1
- package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts +3 -2
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js +3 -2
- package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts +266 -17
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js +128 -1
- package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/dag.d.ts +31 -11
- package/bundled/@yep-anywhere/shared/dist/dag.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/dag.js +77 -33
- package/bundled/@yep-anywhere/shared/dist/dag.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/git-status.d.ts +93 -1
- package/bundled/@yep-anywhere/shared/dist/git-status.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/git-status.js +1 -1
- package/bundled/@yep-anywhere/shared/dist/git-status.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.js +1 -1
- package/bundled/@yep-anywhere/shared/dist/ideMetadata.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/index.d.ts +22 -11
- package/bundled/@yep-anywhere/shared/dist/index.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/index.js +9 -3
- package/bundled/@yep-anywhere/shared/dist/index.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts +1 -0
- package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/local-resource.js +4 -0
- package/bundled/@yep-anywhere/shared/dist/local-resource.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts +136 -0
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js +65 -3
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts +1 -1
- package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts +153 -0
- package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/project-queue.js +8 -0
- package/bundled/@yep-anywhere/shared/dist/project-queue.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts +26 -2
- package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/relay-protocol.js +33 -0
- package/bundled/@yep-anywhere/shared/dist/relay-protocol.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/relay.d.ts +45 -5
- package/bundled/@yep-anywhere/shared/dist/relay.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/relay.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts +25 -0
- package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/safe-restart.js +2 -0
- package/bundled/@yep-anywhere/shared/dist/safe-restart.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/server-capabilities.d.ts +248 -0
- package/bundled/@yep-anywhere/shared/dist/server-capabilities.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/server-capabilities.js +251 -0
- package/bundled/@yep-anywhere/shared/dist/server-capabilities.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.d.ts +2 -2
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.js +3 -3
- package/bundled/@yep-anywhere/shared/dist/session/SessionView.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts +10 -0
- package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts +18 -0
- package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/tool-display-actions.d.ts +26 -0
- package/bundled/@yep-anywhere/shared/dist/tool-display-actions.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/tool-display-actions.js +9 -0
- package/bundled/@yep-anywhere/shared/dist/tool-display-actions.js.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/types.d.ts +253 -8
- package/bundled/@yep-anywhere/shared/dist/types.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/types.js +48 -5
- package/bundled/@yep-anywhere/shared/dist/types.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/upload.d.ts +34 -2
- package/bundled/@yep-anywhere/shared/dist/upload.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts +47 -0
- package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js +59 -1
- package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js.map +1 -1
- package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts +54 -0
- package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts.map +1 -0
- package/bundled/@yep-anywhere/shared/dist/workstreams.js +8 -0
- package/bundled/@yep-anywhere/shared/dist/workstreams.js.map +1 -0
- package/bundled/@yep-anywhere/shared/package.json +1 -1
- package/client-dist/assets/alegreya-sans-latin-400-italic-BQIUBrX-.woff2 +0 -0
- package/client-dist/assets/alegreya-sans-latin-400-normal-BxeZdXas.woff2 +0 -0
- package/client-dist/assets/alegreya-sans-latin-500-normal-uodOEoAl.woff2 +0 -0
- package/client-dist/assets/alegreya-sans-latin-700-normal-DFYOGfC8.woff2 +0 -0
- package/client-dist/assets/de-BNhVdIq4.js +6 -0
- package/client-dist/assets/es-Csn9n24J.js +6 -0
- package/client-dist/assets/fira-mono-latin-400-normal-DVTTRLHv.woff2 +0 -0
- package/client-dist/assets/fira-mono-latin-ext-400-normal-B2gPvaNr.woff2 +0 -0
- package/client-dist/assets/fira-mono-symbols2-400-normal-C6JptOil.woff2 +0 -0
- package/client-dist/assets/fr-DKx4tSpo.js +6 -0
- package/client-dist/assets/index-C41clQ66.js +561 -0
- package/client-dist/assets/index-LbeFv8ym.css +1 -0
- package/client-dist/assets/inter-latin-400-italic-D1l0FflY.woff2 +0 -0
- package/client-dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/client-dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
- package/client-dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
- package/client-dist/assets/ja-DAkhkwQZ.js +6 -0
- package/client-dist/assets/zh-CN-B7lY0cc6.js +6 -0
- package/client-dist/index.html +3 -3
- package/client-dist/sw.js +96 -9
- package/dist/app.d.ts +25 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +350 -35
- package/dist/app.js.map +1 -1
- package/dist/augments/augment-generator.d.ts +1 -1
- package/dist/augments/augment-generator.d.ts.map +1 -1
- package/dist/augments/augment-generator.js +2 -2
- package/dist/augments/augment-generator.js.map +1 -1
- package/dist/augments/markdown-augments.d.ts +1 -1
- package/dist/augments/markdown-augments.d.ts.map +1 -1
- package/dist/augments/markdown-augments.js +5 -5
- package/dist/augments/markdown-augments.js.map +1 -1
- package/dist/augments/safe-markdown.d.ts +10 -0
- package/dist/augments/safe-markdown.d.ts.map +1 -1
- package/dist/augments/safe-markdown.js +146 -3
- package/dist/augments/safe-markdown.js.map +1 -1
- package/dist/augments/stream-augmenter.d.ts +3 -0
- package/dist/augments/stream-augmenter.d.ts.map +1 -1
- package/dist/augments/stream-augmenter.js +6 -3
- package/dist/augments/stream-augmenter.js.map +1 -1
- package/dist/augments/stream-coordinator.d.ts +5 -1
- package/dist/augments/stream-coordinator.d.ts.map +1 -1
- package/dist/augments/stream-coordinator.js +6 -4
- package/dist/augments/stream-coordinator.js.map +1 -1
- package/dist/augments/task-list-augments.d.ts +27 -0
- package/dist/augments/task-list-augments.d.ts.map +1 -0
- package/dist/augments/task-list-augments.js +360 -0
- package/dist/augments/task-list-augments.js.map +1 -0
- package/dist/cli.d.ts +1 -17
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +22 -8
- package/dist/cli.js.map +1 -1
- package/dist/codex/codeModeExec.d.ts +27 -0
- package/dist/codex/codeModeExec.d.ts.map +1 -0
- package/dist/codex/codeModeExec.js +264 -0
- package/dist/codex/codeModeExec.js.map +1 -0
- package/dist/codex/correlationDebugLogger.d.ts.map +1 -1
- package/dist/codex/correlationDebugLogger.js +36 -8
- package/dist/codex/correlationDebugLogger.js.map +1 -1
- package/dist/codex/displayActions.d.ts +48 -0
- package/dist/codex/displayActions.d.ts.map +1 -0
- package/dist/codex/displayActions.js +674 -0
- package/dist/codex/displayActions.js.map +1 -0
- package/dist/codex/normalization.d.ts +10 -6
- package/dist/codex/normalization.d.ts.map +1 -1
- package/dist/codex/normalization.js +94 -261
- package/dist/codex/normalization.js.map +1 -1
- package/dist/config.d.ts +49 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +55 -14
- package/dist/config.js.map +1 -1
- package/dist/defaults.d.ts +3 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +3 -0
- package/dist/defaults.js.map +1 -0
- package/dist/device/DeviceBridgeService.js +1 -1
- package/dist/device/DeviceBridgeService.js.map +1 -1
- package/dist/envSettings.d.ts +64 -0
- package/dist/envSettings.d.ts.map +1 -0
- package/dist/envSettings.js +553 -0
- package/dist/envSettings.js.map +1 -0
- package/dist/frontend/static.d.ts.map +1 -1
- package/dist/frontend/static.js +3 -1
- package/dist/frontend/static.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +190 -14
- package/dist/index.js.map +1 -1
- package/dist/indexes/SessionDiscoveryIndex.d.ts +78 -0
- package/dist/indexes/SessionDiscoveryIndex.d.ts.map +1 -0
- package/dist/indexes/SessionDiscoveryIndex.js +223 -0
- package/dist/indexes/SessionDiscoveryIndex.js.map +1 -0
- package/dist/indexes/SessionIndexService.d.ts +114 -1
- package/dist/indexes/SessionIndexService.d.ts.map +1 -1
- package/dist/indexes/SessionIndexService.js +875 -105
- package/dist/indexes/SessionIndexService.js.map +1 -1
- package/dist/indexes/index.d.ts +2 -1
- package/dist/indexes/index.d.ts.map +1 -1
- package/dist/indexes/index.js +1 -0
- package/dist/indexes/index.js.map +1 -1
- package/dist/indexes/types.d.ts +26 -0
- package/dist/indexes/types.d.ts.map +1 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +2 -3
- package/dist/logging/logger.js.map +1 -1
- package/dist/maintenance/server.d.ts.map +1 -1
- package/dist/maintenance/server.js +8 -11
- package/dist/maintenance/server.js.map +1 -1
- package/dist/metadata/ProjectMetadataService.d.ts +7 -0
- package/dist/metadata/ProjectMetadataService.d.ts.map +1 -1
- package/dist/metadata/ProjectMetadataService.js +63 -19
- package/dist/metadata/ProjectMetadataService.js.map +1 -1
- package/dist/metadata/SessionMetadataService.d.ts +82 -3
- package/dist/metadata/SessionMetadataService.d.ts.map +1 -1
- package/dist/metadata/SessionMetadataService.js +233 -17
- package/dist/metadata/SessionMetadataService.js.map +1 -1
- package/dist/middleware/file-access.d.ts +66 -0
- package/dist/middleware/file-access.d.ts.map +1 -0
- package/dist/middleware/file-access.js +112 -0
- package/dist/middleware/file-access.js.map +1 -0
- package/dist/projects/codex-scanner.d.ts +28 -1
- package/dist/projects/codex-scanner.d.ts.map +1 -1
- package/dist/projects/codex-scanner.js +149 -39
- package/dist/projects/codex-scanner.js.map +1 -1
- package/dist/projects/gemini-scanner.d.ts.map +1 -1
- package/dist/projects/gemini-scanner.js +59 -6
- package/dist/projects/gemini-scanner.js.map +1 -1
- package/dist/projects/paths.d.ts +15 -1
- package/dist/projects/paths.d.ts.map +1 -1
- package/dist/projects/paths.js +69 -23
- package/dist/projects/paths.js.map +1 -1
- package/dist/projects/scanner.d.ts +5 -0
- package/dist/projects/scanner.d.ts.map +1 -1
- package/dist/projects/scanner.js +136 -28
- package/dist/projects/scanner.js.map +1 -1
- package/dist/push/InactivityPushNotifier.d.ts +61 -0
- package/dist/push/InactivityPushNotifier.d.ts.map +1 -0
- package/dist/push/InactivityPushNotifier.js +305 -0
- package/dist/push/InactivityPushNotifier.js.map +1 -0
- package/dist/push/PushNotifier.d.ts.map +1 -1
- package/dist/push/PushNotifier.js.map +1 -1
- package/dist/push/PushService.d.ts +7 -4
- package/dist/push/PushService.d.ts.map +1 -1
- package/dist/push/PushService.js +27 -7
- package/dist/push/PushService.js.map +1 -1
- package/dist/push/index.d.ts +2 -1
- package/dist/push/index.d.ts.map +1 -1
- package/dist/push/index.js +1 -0
- package/dist/push/index.js.map +1 -1
- package/dist/push/routes.d.ts.map +1 -1
- package/dist/push/routes.js +28 -1
- package/dist/push/routes.js.map +1 -1
- package/dist/push/types.d.ts +21 -3
- package/dist/push/types.d.ts.map +1 -1
- package/dist/push/types.js +2 -0
- package/dist/push/types.js.map +1 -1
- package/dist/routes/dev.d.ts +2 -0
- package/dist/routes/dev.d.ts.map +1 -1
- package/dist/routes/dev.js +25 -0
- package/dist/routes/dev.js.map +1 -1
- package/dist/routes/env-settings.d.ts +20 -0
- package/dist/routes/env-settings.d.ts.map +1 -0
- package/dist/routes/env-settings.js +25 -0
- package/dist/routes/env-settings.js.map +1 -0
- package/dist/routes/files.d.ts +9 -0
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +98 -10
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/git-status.d.ts.map +1 -1
- package/dist/routes/git-status.js +691 -23
- package/dist/routes/git-status.js.map +1 -1
- package/dist/routes/global-sessions.d.ts +11 -1
- package/dist/routes/global-sessions.d.ts.map +1 -1
- package/dist/routes/global-sessions.js +53 -33
- package/dist/routes/global-sessions.js.map +1 -1
- package/dist/routes/inbox.d.ts +10 -1
- package/dist/routes/inbox.d.ts.map +1 -1
- package/dist/routes/inbox.js +30 -3
- package/dist/routes/inbox.js.map +1 -1
- package/dist/routes/local-file.d.ts +6 -2
- package/dist/routes/local-file.d.ts.map +1 -1
- package/dist/routes/local-file.js +13 -4
- package/dist/routes/local-file.js.map +1 -1
- package/dist/routes/local-image.d.ts +2 -1
- package/dist/routes/local-image.d.ts.map +1 -1
- package/dist/routes/local-image.js.map +1 -1
- package/dist/routes/local-resource-policy.d.ts +7 -1
- package/dist/routes/local-resource-policy.d.ts.map +1 -1
- package/dist/routes/local-resource-policy.js +0 -0
- package/dist/routes/local-resource-policy.js.map +1 -1
- package/dist/routes/processes.d.ts.map +1 -1
- package/dist/routes/processes.js +49 -11
- package/dist/routes/processes.js.map +1 -1
- package/dist/routes/project-queue-response.d.ts +26 -0
- package/dist/routes/project-queue-response.d.ts.map +1 -0
- package/dist/routes/project-queue-response.js +188 -0
- package/dist/routes/project-queue-response.js.map +1 -0
- package/dist/routes/project-queue.d.ts +5 -0
- package/dist/routes/project-queue.d.ts.map +1 -0
- package/dist/routes/project-queue.js +219 -0
- package/dist/routes/project-queue.js.map +1 -0
- package/dist/routes/projects.d.ts +6 -0
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +116 -28
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/providers.d.ts +5 -0
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +52 -33
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/public-shares.d.ts.map +1 -1
- package/dist/routes/public-shares.js +46 -17
- package/dist/routes/public-shares.js.map +1 -1
- package/dist/routes/recents.d.ts +3 -0
- package/dist/routes/recents.d.ts.map +1 -1
- package/dist/routes/recents.js +3 -1
- package/dist/routes/recents.js.map +1 -1
- package/dist/routes/server-admin.d.ts +9 -0
- package/dist/routes/server-admin.d.ts.map +1 -1
- package/dist/routes/server-admin.js +45 -7
- package/dist/routes/server-admin.js.map +1 -1
- package/dist/routes/session-claude-resume-guard.d.ts +16 -0
- package/dist/routes/session-claude-resume-guard.d.ts.map +1 -0
- package/dist/routes/session-claude-resume-guard.js +50 -0
- package/dist/routes/session-claude-resume-guard.js.map +1 -0
- package/dist/routes/session-compact-thresholds.d.ts +22 -0
- package/dist/routes/session-compact-thresholds.d.ts.map +1 -0
- package/dist/routes/session-compact-thresholds.js +35 -0
- package/dist/routes/session-compact-thresholds.js.map +1 -0
- package/dist/routes/session-index.d.ts +7 -0
- package/dist/routes/session-index.d.ts.map +1 -0
- package/dist/routes/session-index.js +9 -0
- package/dist/routes/session-index.js.map +1 -0
- package/dist/routes/session-list-options.d.ts +1 -1
- package/dist/routes/session-list-options.d.ts.map +1 -1
- package/dist/routes/session-list-options.js +1 -1
- package/dist/routes/session-list-options.js.map +1 -1
- package/dist/routes/session-metadata-patch.d.ts +24 -0
- package/dist/routes/session-metadata-patch.d.ts.map +1 -0
- package/dist/routes/session-metadata-patch.js +119 -0
- package/dist/routes/session-metadata-patch.js.map +1 -0
- package/dist/routes/session-project-routing.d.ts +25 -0
- package/dist/routes/session-project-routing.d.ts.map +1 -0
- package/dist/routes/session-project-routing.js +32 -0
- package/dist/routes/session-project-routing.js.map +1 -0
- package/dist/routes/session-provider-resolution.d.ts +28 -0
- package/dist/routes/session-provider-resolution.d.ts.map +1 -0
- package/dist/routes/session-provider-resolution.js +22 -0
- package/dist/routes/session-provider-resolution.js.map +1 -0
- package/dist/routes/session-queue-summaries.d.ts +21 -0
- package/dist/routes/session-queue-summaries.d.ts.map +1 -0
- package/dist/routes/session-queue-summaries.js +79 -0
- package/dist/routes/session-queue-summaries.js.map +1 -0
- package/dist/routes/session-recovered-queue.d.ts +43 -0
- package/dist/routes/session-recovered-queue.d.ts.map +1 -0
- package/dist/routes/session-recovered-queue.js +132 -0
- package/dist/routes/session-recovered-queue.js.map +1 -0
- package/dist/routes/session-request-helpers.d.ts +31 -0
- package/dist/routes/session-request-helpers.d.ts.map +1 -0
- package/dist/routes/session-request-helpers.js +212 -0
- package/dist/routes/session-request-helpers.js.map +1 -0
- package/dist/routes/session-thinking-options.d.ts +12 -0
- package/dist/routes/session-thinking-options.d.ts.map +1 -0
- package/dist/routes/session-thinking-options.js +7 -0
- package/dist/routes/session-thinking-options.js.map +1 -0
- package/dist/routes/sessions.d.ts +14 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +1965 -679
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/settings-parsers.d.ts +37 -0
- package/dist/routes/settings-parsers.d.ts.map +1 -0
- package/dist/routes/settings-parsers.js +896 -0
- package/dist/routes/settings-parsers.js.map +1 -0
- package/dist/routes/settings.d.ts +7 -1
- package/dist/routes/settings.d.ts.map +1 -1
- package/dist/routes/settings.js +114 -258
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/speech.d.ts +24 -2
- package/dist/routes/speech.d.ts.map +1 -1
- package/dist/routes/speech.js +539 -10
- package/dist/routes/speech.js.map +1 -1
- package/dist/routes/supervisor-queue.d.ts +6 -0
- package/dist/routes/supervisor-queue.d.ts.map +1 -0
- package/dist/routes/supervisor-queue.js +35 -0
- package/dist/routes/supervisor-queue.js.map +1 -0
- package/dist/routes/upload.d.ts +2 -0
- package/dist/routes/upload.d.ts.map +1 -1
- package/dist/routes/upload.js +190 -38
- package/dist/routes/upload.js.map +1 -1
- package/dist/routes/version.d.ts +16 -1
- package/dist/routes/version.d.ts.map +1 -1
- package/dist/routes/version.js +27 -8
- package/dist/routes/version.js.map +1 -1
- package/dist/routes/workstreams.d.ts +11 -0
- package/dist/routes/workstreams.d.ts.map +1 -0
- package/dist/routes/workstreams.js +144 -0
- package/dist/routes/workstreams.js.map +1 -0
- package/dist/routes/ws-message-router.d.ts +10 -1
- package/dist/routes/ws-message-router.d.ts.map +1 -1
- package/dist/routes/ws-message-router.js +43 -4
- package/dist/routes/ws-message-router.js.map +1 -1
- package/dist/routes/ws-relay-handlers.d.ts +27 -5
- package/dist/routes/ws-relay-handlers.d.ts.map +1 -1
- package/dist/routes/ws-relay-handlers.js +177 -19
- package/dist/routes/ws-relay-handlers.js.map +1 -1
- package/dist/routes/ws-relay.d.ts +19 -0
- package/dist/routes/ws-relay.d.ts.map +1 -1
- package/dist/routes/ws-relay.js +21 -7
- package/dist/routes/ws-relay.js.map +1 -1
- package/dist/sdk/cli-detection.d.ts +1 -1
- package/dist/sdk/cli-detection.d.ts.map +1 -1
- package/dist/sdk/cli-detection.js +47 -7
- package/dist/sdk/cli-detection.js.map +1 -1
- package/dist/sdk/messageLogger.d.ts.map +1 -1
- package/dist/sdk/messageLogger.js +38 -10
- package/dist/sdk/messageLogger.js.map +1 -1
- package/dist/sdk/messageQueue.d.ts +5 -0
- package/dist/sdk/messageQueue.d.ts.map +1 -1
- package/dist/sdk/messageQueue.js +47 -0
- package/dist/sdk/messageQueue.js.map +1 -1
- package/dist/sdk/providers/__mocks__/grok.d.ts +1 -1
- package/dist/sdk/providers/__mocks__/grok.d.ts.map +1 -1
- package/dist/sdk/providers/__mocks__/grok.js +1 -1
- package/dist/sdk/providers/__mocks__/grok.js.map +1 -1
- package/dist/sdk/providers/agentctl-session-env.d.ts +8 -0
- package/dist/sdk/providers/agentctl-session-env.d.ts.map +1 -0
- package/dist/sdk/providers/agentctl-session-env.js +52 -0
- package/dist/sdk/providers/agentctl-session-env.js.map +1 -0
- package/dist/sdk/providers/claude-ollama.d.ts +2 -1
- package/dist/sdk/providers/claude-ollama.d.ts.map +1 -1
- package/dist/sdk/providers/claude-ollama.js +1 -0
- package/dist/sdk/providers/claude-ollama.js.map +1 -1
- package/dist/sdk/providers/claude-retention.d.ts +19 -0
- package/dist/sdk/providers/claude-retention.d.ts.map +1 -0
- package/dist/sdk/providers/claude-retention.js +169 -0
- package/dist/sdk/providers/claude-retention.js.map +1 -0
- package/dist/sdk/providers/claude.d.ts +52 -5
- package/dist/sdk/providers/claude.d.ts.map +1 -1
- package/dist/sdk/providers/claude.js +593 -71
- package/dist/sdk/providers/claude.js.map +1 -1
- package/dist/sdk/providers/codex-model-catalog.d.ts +34 -0
- package/dist/sdk/providers/codex-model-catalog.d.ts.map +1 -0
- package/dist/sdk/providers/codex-model-catalog.js +378 -0
- package/dist/sdk/providers/codex-model-catalog.js.map +1 -0
- package/dist/sdk/providers/codex-notification-guards.d.ts +15 -0
- package/dist/sdk/providers/codex-notification-guards.d.ts.map +1 -0
- package/dist/sdk/providers/codex-notification-guards.js +159 -0
- package/dist/sdk/providers/codex-notification-guards.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts +8 -0
- package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/ImageGenerationItem.d.ts +9 -0
- package/dist/sdk/providers/codex-protocol/generated/ImageGenerationItem.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/ImageGenerationItem.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/ImageGenerationItem.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts +10 -0
- package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts +23 -0
- package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts +8 -0
- package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts +1 -1
- package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts +39 -1
- package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/ThreadId.d.ts +5 -0
- package/dist/sdk/providers/codex-protocol/generated/ThreadId.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/WebSearchItem.d.ts +7 -0
- package/dist/sdk/providers/codex-protocol/generated/WebSearchItem.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/WebSearchItem.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/WebSearchItem.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts +3 -3
- package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/AskForApproval.d.ts +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/AskForApproval.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts +12 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/CodexErrorInfo.d.ts +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/CodexErrorInfo.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts +6 -2
- package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts +8 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts +7 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts +5 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts +6 -7
- package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts +2 -2
- package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts +9 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts +15 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts +2 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts +2 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts +21 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts +4 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts +2 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadExtra.d.ts +5 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadExtra.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadExtra.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadExtra.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts +71 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts +46 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadHistoryMode.d.ts +2 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadHistoryMode.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadHistoryMode.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadHistoryMode.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts +22 -12
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts +5 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts +17 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts +7 -7
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts +13 -2
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts +14 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts +12 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts +23 -9
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts +8 -2
- package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/Turn.d.ts +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/Turn.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts +2 -2
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts +17 -5
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts +8 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts.map +1 -1
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts +7 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts.map +1 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js +3 -0
- package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js.map +1 -0
- package/dist/sdk/providers/codex-protocol/index.d.ts +7 -0
- package/dist/sdk/providers/codex-protocol/index.d.ts.map +1 -1
- package/dist/sdk/providers/codex-summary-helpers.d.ts +41 -0
- package/dist/sdk/providers/codex-summary-helpers.d.ts.map +1 -0
- package/dist/sdk/providers/codex-summary-helpers.js +207 -0
- package/dist/sdk/providers/codex-summary-helpers.js.map +1 -0
- package/dist/sdk/providers/codex.d.ts +23 -26
- package/dist/sdk/providers/codex.d.ts.map +1 -1
- package/dist/sdk/providers/codex.js +429 -623
- package/dist/sdk/providers/codex.js.map +1 -1
- package/dist/sdk/providers/env-filter.d.ts.map +1 -1
- package/dist/sdk/providers/env-filter.js +19 -1
- package/dist/sdk/providers/env-filter.js.map +1 -1
- package/dist/sdk/providers/gemini-tools.d.ts +28 -0
- package/dist/sdk/providers/gemini-tools.d.ts.map +1 -0
- package/dist/sdk/providers/gemini-tools.js +57 -0
- package/dist/sdk/providers/gemini-tools.js.map +1 -0
- package/dist/sdk/providers/gemini.d.ts.map +1 -1
- package/dist/sdk/providers/gemini.js +4 -2
- package/dist/sdk/providers/gemini.js.map +1 -1
- package/dist/sdk/providers/grok-acp.d.ts +1 -1
- package/dist/sdk/providers/grok-acp.d.ts.map +1 -1
- package/dist/sdk/providers/grok-acp.js +1 -1
- package/dist/sdk/providers/grok-acp.js.map +1 -1
- package/dist/sdk/providers/index.d.ts +1 -0
- package/dist/sdk/providers/index.d.ts.map +1 -1
- package/dist/sdk/providers/index.js +6 -0
- package/dist/sdk/providers/index.js.map +1 -1
- package/dist/sdk/providers/opencode-models.d.ts +17 -0
- package/dist/sdk/providers/opencode-models.d.ts.map +1 -0
- package/dist/sdk/providers/opencode-models.js +83 -0
- package/dist/sdk/providers/opencode-models.js.map +1 -0
- package/dist/sdk/providers/opencode-tools.d.ts +36 -0
- package/dist/sdk/providers/opencode-tools.d.ts.map +1 -0
- package/dist/sdk/providers/opencode-tools.js +78 -0
- package/dist/sdk/providers/opencode-tools.js.map +1 -0
- package/dist/sdk/providers/opencode.d.ts +44 -4
- package/dist/sdk/providers/opencode.d.ts.map +1 -1
- package/dist/sdk/providers/opencode.js +329 -102
- package/dist/sdk/providers/opencode.js.map +1 -1
- package/dist/sdk/providers/pi-rpc-client.d.ts +90 -0
- package/dist/sdk/providers/pi-rpc-client.d.ts.map +1 -0
- package/dist/sdk/providers/pi-rpc-client.js +168 -0
- package/dist/sdk/providers/pi-rpc-client.js.map +1 -0
- package/dist/sdk/providers/pi-tools.d.ts +38 -0
- package/dist/sdk/providers/pi-tools.d.ts.map +1 -0
- package/dist/sdk/providers/pi-tools.js +214 -0
- package/dist/sdk/providers/pi-tools.js.map +1 -0
- package/dist/sdk/providers/pi.d.ts +84 -0
- package/dist/sdk/providers/pi.d.ts.map +1 -0
- package/dist/sdk/providers/pi.js +686 -0
- package/dist/sdk/providers/pi.js.map +1 -0
- package/dist/sdk/providers/staticSlashCommands.d.ts +4 -0
- package/dist/sdk/providers/staticSlashCommands.d.ts.map +1 -0
- package/dist/sdk/providers/staticSlashCommands.js +14 -0
- package/dist/sdk/providers/staticSlashCommands.js.map +1 -0
- package/dist/sdk/providers/types.d.ts +144 -17
- package/dist/sdk/providers/types.d.ts.map +1 -1
- package/dist/sdk/remote-spawn.d.ts.map +1 -1
- package/dist/sdk/remote-spawn.js.map +1 -1
- package/dist/sdk/slashCommandEmulation.d.ts +9 -0
- package/dist/sdk/slashCommandEmulation.d.ts.map +1 -1
- package/dist/sdk/slashCommandEmulation.js +15 -0
- package/dist/sdk/slashCommandEmulation.js.map +1 -1
- package/dist/sdk/types.d.ts +43 -1
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/security/approvalAuditLog.d.ts +3 -2
- package/dist/security/approvalAuditLog.d.ts.map +1 -1
- package/dist/security/approvalAuditLog.js +62 -2
- package/dist/security/approvalAuditLog.js.map +1 -1
- package/dist/services/BrowserProfileService.d.ts +21 -0
- package/dist/services/BrowserProfileService.d.ts.map +1 -1
- package/dist/services/BrowserProfileService.js +74 -1
- package/dist/services/BrowserProfileService.js.map +1 -1
- package/dist/services/CacheMissBillingMonitor.d.ts +25 -0
- package/dist/services/CacheMissBillingMonitor.d.ts.map +1 -0
- package/dist/services/CacheMissBillingMonitor.js +179 -0
- package/dist/services/CacheMissBillingMonitor.js.map +1 -0
- package/dist/services/CodexUpdateChecker.d.ts.map +1 -1
- package/dist/services/CodexUpdateChecker.js +3 -2
- package/dist/services/CodexUpdateChecker.js.map +1 -1
- package/dist/services/ModelInfoService.d.ts +58 -9
- package/dist/services/ModelInfoService.d.ts.map +1 -1
- package/dist/services/ModelInfoService.js +127 -14
- package/dist/services/ModelInfoService.js.map +1 -1
- package/dist/services/ProjectQueueScheduler.d.ts +91 -0
- package/dist/services/ProjectQueueScheduler.d.ts.map +1 -0
- package/dist/services/ProjectQueueScheduler.js +404 -0
- package/dist/services/ProjectQueueScheduler.js.map +1 -0
- package/dist/services/ProjectQueueService.d.ts +60 -0
- package/dist/services/ProjectQueueService.d.ts.map +1 -0
- package/dist/services/ProjectQueueService.js +806 -0
- package/dist/services/ProjectQueueService.js.map +1 -0
- package/dist/services/RelayClientService.d.ts +5 -0
- package/dist/services/RelayClientService.d.ts.map +1 -1
- package/dist/services/RelayClientService.js +26 -12
- package/dist/services/RelayClientService.js.map +1 -1
- package/dist/services/SafeRestartService.d.ts +48 -0
- package/dist/services/SafeRestartService.d.ts.map +1 -0
- package/dist/services/SafeRestartService.js +173 -0
- package/dist/services/SafeRestartService.js.map +1 -0
- package/dist/services/ServerSettingsService.d.ts +41 -1
- package/dist/services/ServerSettingsService.d.ts.map +1 -1
- package/dist/services/ServerSettingsService.js +110 -1
- package/dist/services/ServerSettingsService.js.map +1 -1
- package/dist/services/SessionQueuePersistenceService.d.ts +55 -0
- package/dist/services/SessionQueuePersistenceService.d.ts.map +1 -0
- package/dist/services/SessionQueuePersistenceService.js +264 -0
- package/dist/services/SessionQueuePersistenceService.js.map +1 -0
- package/dist/services/WorkstreamService.d.ts +92 -0
- package/dist/services/WorkstreamService.d.ts.map +1 -0
- package/dist/services/WorkstreamService.js +627 -0
- package/dist/services/WorkstreamService.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +4 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/projectWorkIdle.d.ts +42 -0
- package/dist/services/projectWorkIdle.d.ts.map +1 -0
- package/dist/services/projectWorkIdle.js +50 -0
- package/dist/services/projectWorkIdle.js.map +1 -0
- package/dist/services/voice/SpeechBackend.d.ts +18 -1
- package/dist/services/voice/SpeechBackend.d.ts.map +1 -1
- package/dist/services/voice/SpeechBackend.js +3 -0
- package/dist/services/voice/SpeechBackend.js.map +1 -1
- package/dist/services/voice/audioRetention.d.ts +20 -0
- package/dist/services/voice/audioRetention.d.ts.map +1 -1
- package/dist/services/voice/audioRetention.js +2 -0
- package/dist/services/voice/audioRetention.js.map +1 -1
- package/dist/services/voice/deepgramBackend.d.ts.map +1 -1
- package/dist/services/voice/deepgramBackend.js +4 -1
- package/dist/services/voice/deepgramBackend.js.map +1 -1
- package/dist/services/voice/localNemoBackend.d.ts +31 -0
- package/dist/services/voice/localNemoBackend.d.ts.map +1 -0
- package/dist/services/voice/localNemoBackend.js +181 -0
- package/dist/services/voice/localNemoBackend.js.map +1 -0
- package/dist/services/voice/localParakeetBackend.d.ts +31 -0
- package/dist/services/voice/localParakeetBackend.d.ts.map +1 -0
- package/dist/services/voice/localParakeetBackend.js +180 -0
- package/dist/services/voice/localParakeetBackend.js.map +1 -0
- package/dist/services/voice/localSttRuntime.d.ts +21 -0
- package/dist/services/voice/localSttRuntime.d.ts.map +1 -0
- package/dist/services/voice/localSttRuntime.js +87 -0
- package/dist/services/voice/localSttRuntime.js.map +1 -0
- package/dist/services/voice/localWhisperBackend.d.ts +2 -1
- package/dist/services/voice/localWhisperBackend.d.ts.map +1 -1
- package/dist/services/voice/localWhisperBackend.js +47 -34
- package/dist/services/voice/localWhisperBackend.js.map +1 -1
- package/dist/services/voice/nemo_worker.py +232 -0
- package/dist/services/voice/parakeet_worker.py +151 -0
- package/dist/services/voice/registry.d.ts +19 -4
- package/dist/services/voice/registry.d.ts.map +1 -1
- package/dist/services/voice/registry.js +72 -22
- package/dist/services/voice/registry.js.map +1 -1
- package/dist/services/voice/serialQueue.d.ts +17 -0
- package/dist/services/voice/serialQueue.d.ts.map +1 -0
- package/dist/services/voice/serialQueue.js +24 -0
- package/dist/services/voice/serialQueue.js.map +1 -0
- package/dist/services/voice/whisper_worker.py +94 -0
- package/dist/services/voice/xaiSttBackend.d.ts +1 -1
- package/dist/services/voice/xaiSttBackend.d.ts.map +1 -1
- package/dist/services/voice/xaiSttBackend.js +15 -3
- package/dist/services/voice/xaiSttBackend.js.map +1 -1
- package/dist/sessions/agent-excerpt.d.ts +29 -0
- package/dist/sessions/agent-excerpt.d.ts.map +1 -0
- package/dist/sessions/agent-excerpt.js +128 -0
- package/dist/sessions/agent-excerpt.js.map +1 -0
- package/dist/sessions/claude-messages.d.ts.map +1 -1
- package/dist/sessions/claude-messages.js +75 -4
- package/dist/sessions/claude-messages.js.map +1 -1
- package/dist/sessions/claude-summary.d.ts +33 -0
- package/dist/sessions/claude-summary.d.ts.map +1 -0
- package/dist/sessions/claude-summary.js +461 -0
- package/dist/sessions/claude-summary.js.map +1 -0
- package/dist/sessions/codex-discovery.d.ts +46 -0
- package/dist/sessions/codex-discovery.d.ts.map +1 -0
- package/dist/sessions/codex-discovery.js +269 -0
- package/dist/sessions/codex-discovery.js.map +1 -0
- package/dist/sessions/codex-reader.d.ts +96 -13
- package/dist/sessions/codex-reader.d.ts.map +1 -1
- package/dist/sessions/codex-reader.js +1070 -142
- package/dist/sessions/codex-reader.js.map +1 -1
- package/dist/sessions/dag.d.ts +25 -4
- package/dist/sessions/dag.d.ts.map +1 -1
- package/dist/sessions/dag.js +37 -4
- package/dist/sessions/dag.js.map +1 -1
- package/dist/sessions/gemini-reader.d.ts +3 -1
- package/dist/sessions/gemini-reader.d.ts.map +1 -1
- package/dist/sessions/gemini-reader.js +17 -8
- package/dist/sessions/gemini-reader.js.map +1 -1
- package/dist/sessions/grok-reader.d.ts +1 -0
- package/dist/sessions/grok-reader.d.ts.map +1 -1
- package/dist/sessions/grok-reader.js +11 -5
- package/dist/sessions/grok-reader.js.map +1 -1
- package/dist/sessions/normalization.d.ts +4 -1
- package/dist/sessions/normalization.d.ts.map +1 -1
- package/dist/sessions/normalization.js +109 -21
- package/dist/sessions/normalization.js.map +1 -1
- package/dist/sessions/null-reader.d.ts +31 -0
- package/dist/sessions/null-reader.d.ts.map +1 -0
- package/dist/sessions/null-reader.js +30 -0
- package/dist/sessions/null-reader.js.map +1 -0
- package/dist/sessions/opencode-db-reader.d.ts +66 -0
- package/dist/sessions/opencode-db-reader.d.ts.map +1 -0
- package/dist/sessions/opencode-db-reader.js +333 -0
- package/dist/sessions/opencode-db-reader.js.map +1 -0
- package/dist/sessions/opencode-reader.d.ts +50 -0
- package/dist/sessions/opencode-reader.d.ts.map +1 -1
- package/dist/sessions/opencode-reader.js +375 -71
- package/dist/sessions/opencode-reader.js.map +1 -1
- package/dist/sessions/pagination.d.ts +6 -0
- package/dist/sessions/pagination.d.ts.map +1 -1
- package/dist/sessions/pagination.js +158 -5
- package/dist/sessions/pagination.js.map +1 -1
- package/dist/sessions/persisted-augments.d.ts +2 -1
- package/dist/sessions/persisted-augments.d.ts.map +1 -1
- package/dist/sessions/persisted-augments.js +2 -2
- package/dist/sessions/persisted-augments.js.map +1 -1
- package/dist/sessions/pi-fork.d.ts +12 -0
- package/dist/sessions/pi-fork.d.ts.map +1 -0
- package/dist/sessions/pi-fork.js +125 -0
- package/dist/sessions/pi-fork.js.map +1 -0
- package/dist/sessions/pi-reader.d.ts +81 -0
- package/dist/sessions/pi-reader.d.ts.map +1 -0
- package/dist/sessions/pi-reader.js +413 -0
- package/dist/sessions/pi-reader.js.map +1 -0
- package/dist/sessions/provider-resolution.d.ts +10 -3
- package/dist/sessions/provider-resolution.d.ts.map +1 -1
- package/dist/sessions/provider-resolution.js +62 -6
- package/dist/sessions/provider-resolution.js.map +1 -1
- package/dist/sessions/reader.d.ts +17 -24
- package/dist/sessions/reader.d.ts.map +1 -1
- package/dist/sessions/reader.js +86 -157
- package/dist/sessions/reader.js.map +1 -1
- package/dist/sessions/recap-overlays.d.ts +38 -0
- package/dist/sessions/recap-overlays.d.ts.map +1 -0
- package/dist/sessions/recap-overlays.js +176 -0
- package/dist/sessions/recap-overlays.js.map +1 -0
- package/dist/sessions/summary-parser-worker-client.d.ts +80 -0
- package/dist/sessions/summary-parser-worker-client.d.ts.map +1 -0
- package/dist/sessions/summary-parser-worker-client.js +539 -0
- package/dist/sessions/summary-parser-worker-client.js.map +1 -0
- package/dist/sessions/summary-parser-worker-entry.d.ts +2 -0
- package/dist/sessions/summary-parser-worker-entry.d.ts.map +1 -0
- package/dist/sessions/summary-parser-worker-entry.js +29 -0
- package/dist/sessions/summary-parser-worker-entry.js.map +1 -0
- package/dist/sessions/summary-parser-worker-protocol.d.ts +105 -0
- package/dist/sessions/summary-parser-worker-protocol.d.ts.map +1 -0
- package/dist/sessions/summary-parser-worker-protocol.js +35 -0
- package/dist/sessions/summary-parser-worker-protocol.js.map +1 -0
- package/dist/sessions/summary-parser-worker-runner.d.ts +3 -0
- package/dist/sessions/summary-parser-worker-runner.d.ts.map +1 -0
- package/dist/sessions/summary-parser-worker-runner.js +158 -0
- package/dist/sessions/summary-parser-worker-runner.js.map +1 -0
- package/dist/sessions/types.d.ts +30 -1
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/startupEnv.d.ts +2 -0
- package/dist/startupEnv.d.ts.map +1 -0
- package/dist/startupEnv.js +97 -0
- package/dist/startupEnv.js.map +1 -0
- package/dist/subscriptions.d.ts.map +1 -1
- package/dist/subscriptions.js +28 -18
- package/dist/subscriptions.js.map +1 -1
- package/dist/supervisor/ExternalSessionTracker.d.ts +5 -1
- package/dist/supervisor/ExternalSessionTracker.d.ts.map +1 -1
- package/dist/supervisor/ExternalSessionTracker.js +98 -6
- package/dist/supervisor/ExternalSessionTracker.js.map +1 -1
- package/dist/supervisor/Process.d.ts +259 -30
- package/dist/supervisor/Process.d.ts.map +1 -1
- package/dist/supervisor/Process.js +1282 -229
- package/dist/supervisor/Process.js.map +1 -1
- package/dist/supervisor/Supervisor.d.ts +201 -5
- package/dist/supervisor/Supervisor.d.ts.map +1 -1
- package/dist/supervisor/Supervisor.js +1074 -55
- package/dist/supervisor/Supervisor.js.map +1 -1
- package/dist/supervisor/WorkerQueue.d.ts +3 -1
- package/dist/supervisor/WorkerQueue.d.ts.map +1 -1
- package/dist/supervisor/WorkerQueue.js +1 -0
- package/dist/supervisor/WorkerQueue.js.map +1 -1
- package/dist/supervisor/composeTimeAnchor.d.ts +36 -0
- package/dist/supervisor/composeTimeAnchor.d.ts.map +1 -0
- package/dist/supervisor/composeTimeAnchor.js +51 -0
- package/dist/supervisor/composeTimeAnchor.js.map +1 -0
- package/dist/supervisor/deferredDeliverySettings.d.ts +23 -0
- package/dist/supervisor/deferredDeliverySettings.d.ts.map +1 -0
- package/dist/supervisor/deferredDeliverySettings.js +40 -0
- package/dist/supervisor/deferredDeliverySettings.js.map +1 -0
- package/dist/supervisor/liveness.d.ts +5 -2
- package/dist/supervisor/liveness.d.ts.map +1 -1
- package/dist/supervisor/liveness.js +40 -2
- package/dist/supervisor/liveness.js.map +1 -1
- package/dist/supervisor/types.d.ts +56 -5
- package/dist/supervisor/types.d.ts.map +1 -1
- package/dist/supervisor/types.js +0 -2
- package/dist/supervisor/types.js.map +1 -1
- package/dist/uploads/AttachmentStagingService.d.ts +94 -0
- package/dist/uploads/AttachmentStagingService.d.ts.map +1 -0
- package/dist/uploads/AttachmentStagingService.js +673 -0
- package/dist/uploads/AttachmentStagingService.js.map +1 -0
- package/dist/uploads/index.d.ts +2 -0
- package/dist/uploads/index.d.ts.map +1 -1
- package/dist/uploads/index.js +1 -0
- package/dist/uploads/index.js.map +1 -1
- package/dist/uploads/manager.d.ts +1 -0
- package/dist/uploads/manager.d.ts.map +1 -1
- package/dist/uploads/manager.js +72 -12
- package/dist/uploads/manager.js.map +1 -1
- package/dist/utils/codexRolloutFiles.d.ts +16 -0
- package/dist/utils/codexRolloutFiles.d.ts.map +1 -0
- package/dist/utils/codexRolloutFiles.js +45 -0
- package/dist/utils/codexRolloutFiles.js.map +1 -0
- package/dist/utils/jsonl.d.ts +8 -0
- package/dist/utils/jsonl.d.ts.map +1 -1
- package/dist/utils/jsonl.js +158 -5
- package/dist/utils/jsonl.js.map +1 -1
- package/dist/utils/publicShareViewerUrl.d.ts.map +1 -1
- package/dist/utils/publicShareViewerUrl.js +2 -15
- package/dist/utils/publicShareViewerUrl.js.map +1 -1
- package/dist/watcher/EventBus.d.ts +42 -4
- package/dist/watcher/EventBus.d.ts.map +1 -1
- package/dist/watcher/EventBus.js.map +1 -1
- package/dist/watcher/FileWatcher.d.ts +47 -0
- package/dist/watcher/FileWatcher.d.ts.map +1 -1
- package/dist/watcher/FileWatcher.js +185 -14
- package/dist/watcher/FileWatcher.js.map +1 -1
- package/dist/watcher/index.d.ts +2 -2
- package/dist/watcher/index.d.ts.map +1 -1
- package/dist/watcher/index.js.map +1 -1
- package/dist/yaModuleEnv.d.ts +6 -6
- package/dist/yaModuleEnv.d.ts.map +1 -1
- package/dist/yaModuleEnv.js +12 -12
- package/dist/yaModuleEnv.js.map +1 -1
- package/package.json +5 -6
- package/client-dist/assets/de-BuEb60Yc.js +0 -6
- package/client-dist/assets/es-CRlmPKnE.js +0 -6
- package/client-dist/assets/fr-Cglgjc2X.js +0 -6
- package/client-dist/assets/index-BNj7ibmq.js +0 -524
- package/client-dist/assets/index-CAmsUazi.css +0 -1
- package/client-dist/assets/ja-DMb9mFPv.js +0 -6
- package/client-dist/assets/zh-CN-D1tbfamz.js +0 -6
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { execFile, spawn } from "node:child_process";
|
|
2
|
-
import { accessSync, constants, existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { accessSync, constants, existsSync, readdirSync, readFileSync, statSync, } from "node:fs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { delimiter, join } from "node:path";
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
|
-
import { query, } from "@anthropic-ai/claude-agent-sdk";
|
|
8
|
-
import { HELPER_SIDE_MODEL_CHEAPEST, getModelContextWindow, } from "../../../bundled/@yep-anywhere/shared/dist/index.js";
|
|
7
|
+
import { forkSession as sdkForkSession, query, } from "@anthropic-ai/claude-agent-sdk";
|
|
8
|
+
import { DEFAULT_PROMPT_CACHE_KEEPALIVE_INACTIVITY_MINUTES, HELPER_SIDE_MODEL_CHEAPEST, getModelContextWindow, } from "../../../bundled/@yep-anywhere/shared/dist/index.js";
|
|
9
9
|
import { getLogger } from "../../logging/logger.js";
|
|
10
10
|
import { detectClaudeCli } from "../cli-detection.js";
|
|
11
11
|
import { logSDKMessage } from "../messageLogger.js";
|
|
12
12
|
import { MessageQueue } from "../messageQueue.js";
|
|
13
|
+
import { ClaudeProviderRetentionTracker } from "./claude-retention.js";
|
|
13
14
|
import { checkRemotePath, createRemoteSpawn, getRemoteHome, testSSHConnection, translateHomePath, } from "../remote-spawn.js";
|
|
14
15
|
import { getProjectDirFromCwd, syncSessionFile } from "../session-sync.js";
|
|
16
|
+
import { createAgentctlSessionEnvBridge } from "./agentctl-session-env.js";
|
|
15
17
|
import { filterEnvForChildProcess } from "./env-filter.js";
|
|
16
18
|
/**
|
|
17
19
|
* Use a spawn wrapper to capture the child process reference for liveness checks.
|
|
@@ -22,6 +24,9 @@ import { filterEnvForChildProcess } from "./env-filter.js";
|
|
|
22
24
|
const USE_SPAWN_WRAPPER = true;
|
|
23
25
|
const CLAUDE_LIVENESS_PROBE_TIMEOUT_MS = 5000;
|
|
24
26
|
const CLAUDE_LIVENESS_PROBE_SOURCE = "claude:control/mcp_status";
|
|
27
|
+
const CLAUDE_PROMPT_CACHE_KEEPALIVE_TIMEOUT_MS = 60_000;
|
|
28
|
+
const CLAUDE_PROMPT_CACHE_KEEPALIVE_MAX_BUDGET_USD = 0.02;
|
|
29
|
+
const DEFAULT_CLAUDE_LOGIN_COMMAND = "claude auth login --claudeai";
|
|
25
30
|
const CLAUDE_EFFORT_LEVELS = [
|
|
26
31
|
"low",
|
|
27
32
|
"medium",
|
|
@@ -33,6 +38,22 @@ const execFileAsync = promisify(execFile);
|
|
|
33
38
|
const requireFromHere = createRequire(import.meta.url);
|
|
34
39
|
const requireFromClaudeSdk = createRequire(requireFromHere.resolve("@anthropic-ai/claude-agent-sdk"));
|
|
35
40
|
let cachedLocalClaudeCodeExecutable;
|
|
41
|
+
function extractClaudeAssistantText(content) {
|
|
42
|
+
if (typeof content === "string")
|
|
43
|
+
return content;
|
|
44
|
+
if (!Array.isArray(content))
|
|
45
|
+
return "";
|
|
46
|
+
let text = "";
|
|
47
|
+
for (const block of content) {
|
|
48
|
+
if (block &&
|
|
49
|
+
typeof block === "object" &&
|
|
50
|
+
block.type === "text" &&
|
|
51
|
+
typeof block.text === "string") {
|
|
52
|
+
text += block.text;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return text;
|
|
56
|
+
}
|
|
36
57
|
function isExecutableFile(filePath) {
|
|
37
58
|
if (!filePath)
|
|
38
59
|
return false;
|
|
@@ -103,42 +124,233 @@ function resolveLocalClaudeCodeExecutable() {
|
|
|
103
124
|
cachedLocalClaudeCodeExecutable = executable ?? null;
|
|
104
125
|
return executable;
|
|
105
126
|
}
|
|
127
|
+
function parseCommandLines(stdout) {
|
|
128
|
+
return stdout
|
|
129
|
+
.split(/\r?\n/)
|
|
130
|
+
.map((line) => line.trim())
|
|
131
|
+
.filter(Boolean);
|
|
132
|
+
}
|
|
133
|
+
function numericField(source, field) {
|
|
134
|
+
if (!source || typeof source !== "object") {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const value = source[field];
|
|
138
|
+
return typeof value === "number" && Number.isFinite(value)
|
|
139
|
+
? value
|
|
140
|
+
: undefined;
|
|
141
|
+
}
|
|
142
|
+
function extractPromptCacheRefreshUsage(message) {
|
|
143
|
+
const record = message;
|
|
144
|
+
const usage = record.usage ?? record.modelUsage ?? record.message?.usage ?? null;
|
|
145
|
+
if (!usage) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
const result = {};
|
|
149
|
+
const inputTokens = numericField(usage, "input_tokens") ?? numericField(usage, "inputTokens");
|
|
150
|
+
const outputTokens = numericField(usage, "output_tokens") ?? numericField(usage, "outputTokens");
|
|
151
|
+
const cacheReadTokens = numericField(usage, "cache_read_input_tokens") ??
|
|
152
|
+
numericField(usage, "cached_input_tokens") ??
|
|
153
|
+
numericField(usage, "cacheReadTokens");
|
|
154
|
+
const cacheCreationTokens = numericField(usage, "cache_creation_input_tokens") ??
|
|
155
|
+
numericField(usage, "cacheCreationTokens");
|
|
156
|
+
if (inputTokens !== undefined)
|
|
157
|
+
result.inputTokens = inputTokens;
|
|
158
|
+
if (outputTokens !== undefined)
|
|
159
|
+
result.outputTokens = outputTokens;
|
|
160
|
+
if (cacheReadTokens !== undefined)
|
|
161
|
+
result.cacheReadTokens = cacheReadTokens;
|
|
162
|
+
if (cacheCreationTokens !== undefined) {
|
|
163
|
+
result.cacheCreationTokens = cacheCreationTokens;
|
|
164
|
+
}
|
|
165
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
166
|
+
}
|
|
167
|
+
function safeMtimeMs(path) {
|
|
168
|
+
try {
|
|
169
|
+
return statSync(path).mtimeMs;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function quotePowerShellDoubleQuoted(value) {
|
|
176
|
+
return `"${value
|
|
177
|
+
.replace(/`/g, "``")
|
|
178
|
+
.replace(/\$/g, "`$")
|
|
179
|
+
.replace(/"/g, '`"')}"`;
|
|
180
|
+
}
|
|
181
|
+
function quotePosixSingleQuoted(value) {
|
|
182
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
183
|
+
}
|
|
184
|
+
export function formatClaudeLoginCommand(executablePath, platform = process.platform) {
|
|
185
|
+
const trimmedPath = executablePath?.trim();
|
|
186
|
+
if (!trimmedPath || trimmedPath === "claude") {
|
|
187
|
+
return DEFAULT_CLAUDE_LOGIN_COMMAND;
|
|
188
|
+
}
|
|
189
|
+
const executable = platform === "win32"
|
|
190
|
+
? quotePowerShellDoubleQuoted(trimmedPath)
|
|
191
|
+
: quotePosixSingleQuoted(trimmedPath);
|
|
192
|
+
const invocation = platform === "win32" ? `& ${executable}` : executable;
|
|
193
|
+
return `${invocation} auth login --claudeai`;
|
|
194
|
+
}
|
|
195
|
+
function getClaudeDesktopCodeRoots() {
|
|
196
|
+
if (process.platform !== "win32")
|
|
197
|
+
return [];
|
|
198
|
+
const localAppData = process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local");
|
|
199
|
+
const appData = process.env.APPDATA ?? join(homedir(), "AppData", "Roaming");
|
|
200
|
+
const roots = [];
|
|
201
|
+
try {
|
|
202
|
+
for (const entry of readdirSync(join(localAppData, "Packages"), {
|
|
203
|
+
withFileTypes: true,
|
|
204
|
+
})) {
|
|
205
|
+
if (entry.isDirectory() && entry.name.startsWith("Claude_")) {
|
|
206
|
+
roots.push(join(localAppData, "Packages", entry.name, "LocalCache", "Roaming", "Claude", "claude-code"));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Claude Desktop may not be installed through the Store package.
|
|
212
|
+
}
|
|
213
|
+
roots.push(join(appData, "Claude", "claude-code"));
|
|
214
|
+
return roots;
|
|
215
|
+
}
|
|
216
|
+
function findClaudeDesktopExecutables() {
|
|
217
|
+
const candidates = [];
|
|
218
|
+
for (const root of getClaudeDesktopCodeRoots()) {
|
|
219
|
+
try {
|
|
220
|
+
for (const entry of readdirSync(root, { withFileTypes: true })) {
|
|
221
|
+
if (!entry.isDirectory())
|
|
222
|
+
continue;
|
|
223
|
+
const candidateDir = join(root, entry.name);
|
|
224
|
+
const candidate = join(candidateDir, "claude.exe");
|
|
225
|
+
if (existsSync(candidate)) {
|
|
226
|
+
candidates.push({
|
|
227
|
+
path: candidate,
|
|
228
|
+
mtimeMs: safeMtimeMs(candidateDir),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// This Claude Desktop layout is optional and version-dependent.
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return candidates
|
|
238
|
+
.sort((a, b) => b.mtimeMs - a.mtimeMs)
|
|
239
|
+
.map((candidate) => candidate.path);
|
|
240
|
+
}
|
|
241
|
+
async function hasShellClaudeCommand() {
|
|
242
|
+
if (process.platform !== "win32")
|
|
243
|
+
return true;
|
|
244
|
+
try {
|
|
245
|
+
const { stdout } = await execFileAsync("where.exe", ["claude"], {
|
|
246
|
+
encoding: "utf-8",
|
|
247
|
+
timeout: 5000,
|
|
248
|
+
});
|
|
249
|
+
return parseCommandLines(stdout).length > 0;
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
async function isUsableClaudeExecutable(path) {
|
|
256
|
+
try {
|
|
257
|
+
await execFileAsync(path, ["--version"], {
|
|
258
|
+
encoding: "utf-8",
|
|
259
|
+
timeout: 5000,
|
|
260
|
+
});
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async function findPreferredClaudeLoginExecutable() {
|
|
268
|
+
if (process.platform !== "win32" || (await hasShellClaudeCommand())) {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
for (const executable of findClaudeDesktopExecutables()) {
|
|
272
|
+
if (await isUsableClaudeExecutable(executable)) {
|
|
273
|
+
return executable;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return undefined;
|
|
277
|
+
}
|
|
278
|
+
export async function getClaudeLoginCommand() {
|
|
279
|
+
return formatClaudeLoginCommand(await findPreferredClaudeLoginExecutable());
|
|
280
|
+
}
|
|
281
|
+
async function* withCleanup(iterator, cleanup) {
|
|
282
|
+
try {
|
|
283
|
+
yield* iterator;
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
cleanup();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Opus and Sonnet both run with the 1M-token context window: their 1M is
|
|
291
|
+
* standard-priced (no per-token premium), so bare `opus`/`sonnet` are
|
|
292
|
+
* normalized to the extended-context alias at every launch/setModel chokepoint
|
|
293
|
+
* and surfaced with the 1M window in the exposed model list.
|
|
294
|
+
*
|
|
295
|
+
* Sonnet's 1M was previously credit-gated (launching `sonnet[1m]` errored with
|
|
296
|
+
* "Usage credits required for 1M context"), so it once kept a separate 200K
|
|
297
|
+
* entry. Sonnet 5 lifted that gate: a live probe on this account runs
|
|
298
|
+
* `--model sonnet` as `claude-sonnet-5[1m]` at a 1,000,000 window on the
|
|
299
|
+
* standard tier with no error. The "Sonnet 5" label is pinned in the
|
|
300
|
+
* description (the name stays the generic "Sonnet") rather than taken from the
|
|
301
|
+
* SDK, because `supportedModels()` still reports the `sonnet` alias as
|
|
302
|
+
* "Sonnet 4.6" even though it routes to Sonnet 5 at runtime; that pin will
|
|
303
|
+
* drift once the SDK catalog catches up, and we accept it. See
|
|
304
|
+
* topics/claude-1m-context.md.
|
|
305
|
+
*/
|
|
306
|
+
const ALWAYS_EXTENDED_CONTEXT_ALIASES = {
|
|
307
|
+
opus: "opus[1m]",
|
|
308
|
+
sonnet: "sonnet[1m]",
|
|
309
|
+
};
|
|
310
|
+
const ALWAYS_EXTENDED_DESCRIPTIONS = {
|
|
311
|
+
opus: "Opus 4.8 with the full 1M-token context window",
|
|
312
|
+
sonnet: "Sonnet 5 with the full 1M-token context window · newer tokenizer bills ~30% more tokens",
|
|
313
|
+
};
|
|
314
|
+
/** Normalize the opus alias to its always-on 1M variant at launch. */
|
|
315
|
+
export function withExtendedClaudeContext(model) {
|
|
316
|
+
return (model && ALWAYS_EXTENDED_CONTEXT_ALIASES[model]) || model;
|
|
317
|
+
}
|
|
106
318
|
/** Static fallback list of Claude models (used if probe fails) */
|
|
107
319
|
const CLAUDE_MODELS_FALLBACK = [
|
|
108
320
|
{
|
|
109
321
|
id: "default",
|
|
110
|
-
name: "Default
|
|
111
|
-
description: "Claude Code chooses the recommended model for your account",
|
|
322
|
+
name: "Default",
|
|
323
|
+
description: "Claude Code chooses the recommended model for your account (probably Sonnet)",
|
|
112
324
|
contextWindow: getModelContextWindow("default", "claude"),
|
|
113
325
|
},
|
|
114
326
|
{
|
|
115
327
|
id: "best",
|
|
116
328
|
name: "Best",
|
|
117
|
-
description: "Highest-capability Claude Code alias
|
|
118
|
-
contextWindow: getModelContextWindow("
|
|
329
|
+
description: "Highest-capability Claude Code alias (probably Opus 4.8, full 1M context)",
|
|
330
|
+
contextWindow: getModelContextWindow("opus[1m]", "claude"),
|
|
119
331
|
},
|
|
120
332
|
{
|
|
121
|
-
id: "
|
|
122
|
-
name: "
|
|
123
|
-
description: "
|
|
124
|
-
contextWindow: getModelContextWindow("
|
|
333
|
+
id: "fable",
|
|
334
|
+
name: "Fable",
|
|
335
|
+
description: "Most capable Claude model for demanding reasoning and long-horizon agentic work",
|
|
336
|
+
contextWindow: getModelContextWindow("fable", "claude"),
|
|
337
|
+
supportsAdaptiveThinking: true,
|
|
338
|
+
supportsAutoMode: true,
|
|
339
|
+
supportsEffort: true,
|
|
340
|
+
supportsFastMode: false,
|
|
341
|
+
supportedEffortLevels: CLAUDE_EFFORT_LEVELS,
|
|
342
|
+
defaultEffortLevel: "high",
|
|
125
343
|
},
|
|
126
344
|
{
|
|
127
|
-
id: "sonnet
|
|
128
|
-
name: "Sonnet
|
|
129
|
-
description:
|
|
345
|
+
id: "sonnet",
|
|
346
|
+
name: "Sonnet",
|
|
347
|
+
description: ALWAYS_EXTENDED_DESCRIPTIONS.sonnet,
|
|
130
348
|
contextWindow: getModelContextWindow("sonnet[1m]", "claude"),
|
|
131
349
|
},
|
|
132
350
|
{
|
|
133
351
|
id: "opus",
|
|
134
352
|
name: "Opus",
|
|
135
|
-
description:
|
|
136
|
-
contextWindow: getModelContextWindow("opus", "claude"),
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
id: "opus[1m]",
|
|
140
|
-
name: "Opus 1M",
|
|
141
|
-
description: "Opus with 1M context for the largest working sets",
|
|
353
|
+
description: ALWAYS_EXTENDED_DESCRIPTIONS.opus,
|
|
142
354
|
contextWindow: getModelContextWindow("opus[1m]", "claude"),
|
|
143
355
|
},
|
|
144
356
|
{
|
|
@@ -190,6 +402,18 @@ function enrichClaudeModel(model) {
|
|
|
190
402
|
supportedEffortLevels: model.supportedEffortLevels ?? CLAUDE_EFFORT_LEVELS,
|
|
191
403
|
};
|
|
192
404
|
}
|
|
405
|
+
function mapClaudeSdkModel(model) {
|
|
406
|
+
return {
|
|
407
|
+
id: model.value,
|
|
408
|
+
name: model.displayName,
|
|
409
|
+
description: model.description,
|
|
410
|
+
supportsEffort: model.supportsEffort,
|
|
411
|
+
supportedEffortLevels: mapClaudeSupportedEffortLevels(model.supportedEffortLevels),
|
|
412
|
+
supportsAdaptiveThinking: model.supportsAdaptiveThinking,
|
|
413
|
+
supportsFastMode: model.supportsFastMode,
|
|
414
|
+
supportsAutoMode: model.supportsAutoMode,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
193
417
|
export function mergeClaudeModels(models) {
|
|
194
418
|
const byId = new Map();
|
|
195
419
|
for (const model of CLAUDE_MODELS_FALLBACK) {
|
|
@@ -205,9 +429,34 @@ export function mergeClaudeModels(models) {
|
|
|
205
429
|
...CLAUDE_MODELS_FALLBACK.map((model) => model.id),
|
|
206
430
|
...models.map((model) => model.id),
|
|
207
431
|
];
|
|
208
|
-
|
|
432
|
+
const merged = [...new Set(orderedIds)]
|
|
209
433
|
.map((id) => byId.get(id))
|
|
210
434
|
.filter((model) => model !== undefined);
|
|
435
|
+
// Opus and Sonnet always use the 1M window (withExtendedClaudeContext), so
|
|
436
|
+
// drop the redundant "opus[1m]"/"sonnet[1m]" entries and surface the 1M
|
|
437
|
+
// window + label on the base alias — including when the SDK probe supplies a
|
|
438
|
+
// 200K window. Sonnet also forces its description (not its name) because the
|
|
439
|
+
// SDK catalog still reports the alias as "Sonnet 4.6" while it routes to
|
|
440
|
+
// Sonnet 5.
|
|
441
|
+
return merged
|
|
442
|
+
.filter((model) => model.id !== "opus[1m]" && model.id !== "sonnet[1m]")
|
|
443
|
+
.map((model) => {
|
|
444
|
+
if (model.id === "opus") {
|
|
445
|
+
return {
|
|
446
|
+
...model,
|
|
447
|
+
contextWindow: getModelContextWindow("opus[1m]", "claude"),
|
|
448
|
+
description: ALWAYS_EXTENDED_DESCRIPTIONS.opus,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
if (model.id === "sonnet") {
|
|
452
|
+
return {
|
|
453
|
+
...model,
|
|
454
|
+
contextWindow: getModelContextWindow("sonnet[1m]", "claude"),
|
|
455
|
+
description: ALWAYS_EXTENDED_DESCRIPTIONS.sonnet,
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
return model;
|
|
459
|
+
});
|
|
211
460
|
}
|
|
212
461
|
/** Cached models from SDK probe */
|
|
213
462
|
let cachedModels = null;
|
|
@@ -273,9 +522,23 @@ export class ClaudeProvider {
|
|
|
273
522
|
supportsPermissionMode = true;
|
|
274
523
|
supportsThinkingToggle = true;
|
|
275
524
|
supportsSlashCommands = true;
|
|
276
|
-
supportsSteering =
|
|
525
|
+
supportsSteering = true;
|
|
526
|
+
supportsSteerNow = true;
|
|
277
527
|
supportsRecaps = true;
|
|
528
|
+
// Intentionally false. Claude emits native away_summary recaps only in the
|
|
529
|
+
// interactive TUI (entrypoint:cli), which writes them to the session JSONL
|
|
530
|
+
// after idle; YA reads and shows those regardless of recap mode. YA drives
|
|
531
|
+
// Claude via the TS SDK (entrypoint:sdk-ts), and there is no known way to
|
|
532
|
+
// make an SDK/YA-owned session emit native recaps, so a "native" choice here
|
|
533
|
+
// is a no-op (and would make fork/tailed wait a pointless native grace
|
|
534
|
+
// window). Do not re-enable on the basis of seeing CLI recaps in the JSONL.
|
|
535
|
+
supportsNativeRecaps = false;
|
|
278
536
|
supportsNativePromptSuggestions = true;
|
|
537
|
+
promptCacheKeepalive = {
|
|
538
|
+
supportsNoContextPollutionNudge: true,
|
|
539
|
+
defaultMode: "auto",
|
|
540
|
+
defaultInactivityMinutes: DEFAULT_PROMPT_CACHE_KEEPALIVE_INACTIVITY_MINUTES,
|
|
541
|
+
};
|
|
279
542
|
/**
|
|
280
543
|
* Check if Claude SDK is available.
|
|
281
544
|
* Since we bundle the SDK, this is always true.
|
|
@@ -299,11 +562,11 @@ export class ClaudeProvider {
|
|
|
299
562
|
async getAuthStatus() {
|
|
300
563
|
const installed = await this.isClaudeCliInstalled();
|
|
301
564
|
if (!installed) {
|
|
302
|
-
return {
|
|
565
|
+
return this.withLoginCommand({
|
|
303
566
|
installed: false,
|
|
304
567
|
authenticated: false,
|
|
305
568
|
enabled: false,
|
|
306
|
-
};
|
|
569
|
+
});
|
|
307
570
|
}
|
|
308
571
|
const apiKey = process.env.ANTHROPIC_API_KEY?.trim();
|
|
309
572
|
if (apiKey) {
|
|
@@ -315,45 +578,54 @@ export class ClaudeProvider {
|
|
|
315
578
|
}
|
|
316
579
|
const cliAuthStatus = await this.getCliAuthStatus();
|
|
317
580
|
if (cliAuthStatus) {
|
|
318
|
-
return cliAuthStatus;
|
|
581
|
+
return this.withLoginCommand(cliAuthStatus);
|
|
319
582
|
}
|
|
320
583
|
const credentialsPath = join(homedir(), ".claude", ".credentials.json");
|
|
321
584
|
if (!existsSync(credentialsPath)) {
|
|
322
|
-
return {
|
|
585
|
+
return this.withLoginCommand({
|
|
323
586
|
installed: true,
|
|
324
587
|
authenticated: false,
|
|
325
588
|
enabled: false,
|
|
326
|
-
};
|
|
589
|
+
});
|
|
327
590
|
}
|
|
328
591
|
try {
|
|
329
592
|
const parsed = JSON.parse(readFileSync(credentialsPath, "utf-8"));
|
|
330
593
|
const oauth = parsed.claudeAiOauth;
|
|
331
594
|
const hasTokens = Boolean(oauth?.accessToken || oauth?.refreshToken);
|
|
332
595
|
if (!hasTokens) {
|
|
333
|
-
return {
|
|
596
|
+
return this.withLoginCommand({
|
|
334
597
|
installed: true,
|
|
335
598
|
authenticated: false,
|
|
336
599
|
enabled: false,
|
|
337
|
-
};
|
|
600
|
+
});
|
|
338
601
|
}
|
|
339
602
|
const expiresAt = typeof oauth?.expiresAt === "number"
|
|
340
603
|
? new Date(oauth.expiresAt)
|
|
341
604
|
: undefined;
|
|
342
605
|
const authenticated = !expiresAt || expiresAt >= new Date() || Boolean(oauth?.refreshToken);
|
|
343
|
-
return {
|
|
606
|
+
return this.withLoginCommand({
|
|
344
607
|
installed: true,
|
|
345
608
|
authenticated,
|
|
346
609
|
enabled: authenticated,
|
|
347
610
|
expiresAt,
|
|
348
|
-
};
|
|
611
|
+
});
|
|
349
612
|
}
|
|
350
613
|
catch {
|
|
351
|
-
return {
|
|
614
|
+
return this.withLoginCommand({
|
|
352
615
|
installed: true,
|
|
353
616
|
authenticated: false,
|
|
354
617
|
enabled: false,
|
|
355
|
-
};
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
async withLoginCommand(status) {
|
|
622
|
+
if (status.authenticated || status.loginCommand) {
|
|
623
|
+
return status;
|
|
356
624
|
}
|
|
625
|
+
return {
|
|
626
|
+
...status,
|
|
627
|
+
loginCommand: await getClaudeLoginCommand(),
|
|
628
|
+
};
|
|
357
629
|
}
|
|
358
630
|
async getCliAuthStatus() {
|
|
359
631
|
try {
|
|
@@ -386,6 +658,26 @@ export class ClaudeProvider {
|
|
|
386
658
|
const cliInfo = detectClaudeCli();
|
|
387
659
|
return cliInfo.found;
|
|
388
660
|
}
|
|
661
|
+
/**
|
|
662
|
+
* Reported Claude model id → canonical YA alias, matched by family component.
|
|
663
|
+
* Anthropic has shipped both "{family}-{version}" (claude-opus-4-8) and
|
|
664
|
+
* "{version}-{family}" (claude-3-5-sonnet), so we look for the family anywhere
|
|
665
|
+
* in the name. One-to-(zero or more): we return the plain alias ("sonnet",
|
|
666
|
+
* not "sonnet[1m]"/"best") because the reported id can't say which the user
|
|
667
|
+
* actually launched. Used only to recover a keying id for non-YA-started
|
|
668
|
+
* sessions. See topics/provider-abstraction.md § Per-model settings keying.
|
|
669
|
+
*/
|
|
670
|
+
yaModelIdForReported(reported) {
|
|
671
|
+
if (!reported)
|
|
672
|
+
return undefined;
|
|
673
|
+
const name = reported.toLowerCase();
|
|
674
|
+
for (const family of ["opus", "sonnet", "haiku", "fable"]) {
|
|
675
|
+
if (new RegExp(`(?:^|[-/])${family}(?:[-/]|$)`).test(name)) {
|
|
676
|
+
return family;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return undefined;
|
|
680
|
+
}
|
|
389
681
|
/**
|
|
390
682
|
* Get available Claude models.
|
|
391
683
|
* Fetches dynamically from SDK via a probe session, with caching.
|
|
@@ -488,13 +780,7 @@ export class ClaudeProvider {
|
|
|
488
780
|
sdkQuery.supportedModels(),
|
|
489
781
|
new Promise((_, reject) => setTimeout(() => reject(new Error("Model probe timed out")), 15000)),
|
|
490
782
|
]);
|
|
491
|
-
return mergeClaudeModels(models.map((
|
|
492
|
-
id: m.value,
|
|
493
|
-
name: m.displayName,
|
|
494
|
-
description: m.description,
|
|
495
|
-
supportsEffort: m.supportsEffort,
|
|
496
|
-
supportedEffortLevels: mapClaudeSupportedEffortLevels(m.supportedEffortLevels),
|
|
497
|
-
})));
|
|
783
|
+
return mergeClaudeModels(models.map((model) => mapClaudeSdkModel(model)));
|
|
498
784
|
}
|
|
499
785
|
finally {
|
|
500
786
|
abortController.abort();
|
|
@@ -515,7 +801,17 @@ export class ClaudeProvider {
|
|
|
515
801
|
* recaps; the renderer should still strip defensively in case the SDK
|
|
516
802
|
* later forwards a TUI-shaped recap unchanged.
|
|
517
803
|
*/
|
|
518
|
-
async
|
|
804
|
+
async generateSummary(request) {
|
|
805
|
+
switch (request.strategy) {
|
|
806
|
+
case "side-session":
|
|
807
|
+
return {
|
|
808
|
+
text: await this.generateSideSessionRecap(request.recentAssistantText, request.model),
|
|
809
|
+
};
|
|
810
|
+
case "fork":
|
|
811
|
+
return await this.generateForkBackedSummary(request);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
async generateSideSessionRecap(recentAssistantText, model) {
|
|
519
815
|
const trimmed = recentAssistantText
|
|
520
816
|
.map((text) => text.trim())
|
|
521
817
|
.filter((text) => text.length > 0);
|
|
@@ -565,7 +861,7 @@ export class ClaudeProvider {
|
|
|
565
861
|
session_id: "",
|
|
566
862
|
};
|
|
567
863
|
}
|
|
568
|
-
const helperModel =
|
|
864
|
+
const helperModel = model === HELPER_SIDE_MODEL_CHEAPEST ? "haiku" : model;
|
|
569
865
|
try {
|
|
570
866
|
const sdkQuery = query({
|
|
571
867
|
prompt: singlePrompt(),
|
|
@@ -585,20 +881,7 @@ export class ClaudeProvider {
|
|
|
585
881
|
for await (const message of sdkQuery) {
|
|
586
882
|
if (message.type === "assistant" &&
|
|
587
883
|
typeof message.message?.content !== "undefined") {
|
|
588
|
-
|
|
589
|
-
if (typeof content === "string") {
|
|
590
|
-
text += content;
|
|
591
|
-
}
|
|
592
|
-
else if (Array.isArray(content)) {
|
|
593
|
-
for (const block of content) {
|
|
594
|
-
if (block &&
|
|
595
|
-
typeof block === "object" &&
|
|
596
|
-
block.type === "text" &&
|
|
597
|
-
typeof block.text === "string") {
|
|
598
|
-
text += block.text;
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
}
|
|
884
|
+
text += extractClaudeAssistantText(message.message.content);
|
|
602
885
|
}
|
|
603
886
|
if (message.type === "result") {
|
|
604
887
|
break;
|
|
@@ -617,6 +900,196 @@ export class ClaudeProvider {
|
|
|
617
900
|
abortController.abort();
|
|
618
901
|
}
|
|
619
902
|
}
|
|
903
|
+
async generateForkBackedSummary(request) {
|
|
904
|
+
const userPrompt = request.purpose === "session-retitle"
|
|
905
|
+
? this.createSessionRetitlePrompt(request)
|
|
906
|
+
: request.purpose === "recap"
|
|
907
|
+
? this.createForkedRecapPrompt()
|
|
908
|
+
: this.createForkAfterSummaryPrompt(request);
|
|
909
|
+
const abortController = new AbortController();
|
|
910
|
+
const abortFromJob = () => abortController.abort();
|
|
911
|
+
if (request.signal?.aborted) {
|
|
912
|
+
abortController.abort();
|
|
913
|
+
}
|
|
914
|
+
else {
|
|
915
|
+
request.signal?.addEventListener("abort", abortFromJob, { once: true });
|
|
916
|
+
}
|
|
917
|
+
const SUMMARY_TIMEOUT_MS = 60_000;
|
|
918
|
+
const timeout = setTimeout(() => abortController.abort(), SUMMARY_TIMEOUT_MS);
|
|
919
|
+
timeout.unref?.();
|
|
920
|
+
async function* singlePrompt() {
|
|
921
|
+
yield {
|
|
922
|
+
type: "user",
|
|
923
|
+
message: { role: "user", content: userPrompt },
|
|
924
|
+
parent_tool_use_id: null,
|
|
925
|
+
session_id: request.generatorSessionId,
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
try {
|
|
929
|
+
const sdkQuery = query({
|
|
930
|
+
prompt: singlePrompt(),
|
|
931
|
+
options: {
|
|
932
|
+
cwd: request.cwd,
|
|
933
|
+
abortController,
|
|
934
|
+
permissionMode: "default",
|
|
935
|
+
pathToClaudeCodeExecutable: resolveLocalClaudeCodeExecutable(),
|
|
936
|
+
env: this.getEnv(),
|
|
937
|
+
resume: request.generatorSessionId,
|
|
938
|
+
maxTurns: 1,
|
|
939
|
+
systemPrompt: request.purpose === "session-retitle"
|
|
940
|
+
? "You are a title helper. Reply with the session title only, no preamble."
|
|
941
|
+
: request.purpose === "recap"
|
|
942
|
+
? "You are a recap helper. Reply with the recap text only, no preamble."
|
|
943
|
+
: "You are a handoff summary helper. Reply with the summary text only, no preamble.",
|
|
944
|
+
},
|
|
945
|
+
});
|
|
946
|
+
let text = "";
|
|
947
|
+
for await (const message of sdkQuery) {
|
|
948
|
+
if (message.type === "assistant" &&
|
|
949
|
+
typeof message.message?.content !== "undefined") {
|
|
950
|
+
text += extractClaudeAssistantText(message.message.content);
|
|
951
|
+
}
|
|
952
|
+
if (message.type === "result") {
|
|
953
|
+
break;
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
const cleaned = text.trim();
|
|
957
|
+
if (!cleaned) {
|
|
958
|
+
throw new Error("Summary generation returned empty text");
|
|
959
|
+
}
|
|
960
|
+
return { text: cleaned };
|
|
961
|
+
}
|
|
962
|
+
finally {
|
|
963
|
+
clearTimeout(timeout);
|
|
964
|
+
request.signal?.removeEventListener("abort", abortFromJob);
|
|
965
|
+
abortController.abort();
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
createForkAfterSummaryPrompt(request) {
|
|
969
|
+
const instructions = request.instructions?.trim();
|
|
970
|
+
const boundaryContext = request.afterTurnContext?.trim();
|
|
971
|
+
return [
|
|
972
|
+
"The first non-empty line must be a concise title of at most 120 characters, with no trailing period.",
|
|
973
|
+
"Write it as: Title: <title>",
|
|
974
|
+
"Then leave one blank line before the handoff summary.",
|
|
975
|
+
"",
|
|
976
|
+
"Summarize the useful state after the retained fork boundary for a peer-agent handoff.",
|
|
977
|
+
`The target fork retains the conversation through completed-turn message id ${request.afterTurnMessageId}.`,
|
|
978
|
+
boundaryContext
|
|
979
|
+
? `The retained boundary is the completed turn ending with this excerpt:\n${boundaryContext}`
|
|
980
|
+
: undefined,
|
|
981
|
+
"The target fork already includes the original request and the assistant/tool work through that selected completed turn.",
|
|
982
|
+
"Do not repeat setup, instruction loading, initial repository orientation, or investigation already present in that retained prefix.",
|
|
983
|
+
"Preserve decisions, constraints, current state, changed files, verification evidence, open risks, and the next useful action.",
|
|
984
|
+
"Do not continue the task. Write text that can be submitted as the next user turn in the target fork.",
|
|
985
|
+
instructions ? "" : undefined,
|
|
986
|
+
instructions ? "Additional user instructions:" : undefined,
|
|
987
|
+
instructions || undefined,
|
|
988
|
+
]
|
|
989
|
+
.filter((part) => part !== undefined)
|
|
990
|
+
.join("\n");
|
|
991
|
+
}
|
|
992
|
+
createForkedRecapPrompt() {
|
|
993
|
+
return [
|
|
994
|
+
"The user stepped away and is coming back.",
|
|
995
|
+
"Recap the current session state in under 40 words, 1-2 plain sentences, no markdown.",
|
|
996
|
+
"Lead with what the assistant did or is doing; mention any pending next action.",
|
|
997
|
+
"Do not greet, do not ask a question, do not add a sign-off.",
|
|
998
|
+
].join("\n");
|
|
999
|
+
}
|
|
1000
|
+
createSessionRetitlePrompt(request) {
|
|
1001
|
+
const lengthTarget = request.lengthTarget ?? 80;
|
|
1002
|
+
const currentTitle = request.currentTitle?.trim();
|
|
1003
|
+
return [
|
|
1004
|
+
"What is a good new title for this session?",
|
|
1005
|
+
"",
|
|
1006
|
+
`Target length: under ${lengthTarget} characters.`,
|
|
1007
|
+
currentTitle ? `Current title: ${currentTitle}` : undefined,
|
|
1008
|
+
"Prefer a concrete task/result phrase over a generic chat title.",
|
|
1009
|
+
"Return only the title. Do not quote it. Do not add a trailing period.",
|
|
1010
|
+
]
|
|
1011
|
+
.filter((part) => part !== undefined)
|
|
1012
|
+
.join("\n");
|
|
1013
|
+
}
|
|
1014
|
+
async refreshPromptCache(options) {
|
|
1015
|
+
const abortController = new AbortController();
|
|
1016
|
+
const timeout = setTimeout(() => abortController.abort(), CLAUDE_PROMPT_CACHE_KEEPALIVE_TIMEOUT_MS);
|
|
1017
|
+
timeout.unref?.();
|
|
1018
|
+
async function* singlePrompt() {
|
|
1019
|
+
yield {
|
|
1020
|
+
type: "user",
|
|
1021
|
+
message: {
|
|
1022
|
+
role: "user",
|
|
1023
|
+
content: "Prompt-cache keepalive only. Reply exactly: OK.",
|
|
1024
|
+
},
|
|
1025
|
+
parent_tool_use_id: null,
|
|
1026
|
+
session_id: options.sessionId,
|
|
1027
|
+
};
|
|
1028
|
+
}
|
|
1029
|
+
const spawnClaudeCodeProcess = options.executor
|
|
1030
|
+
? createRemoteSpawn({
|
|
1031
|
+
host: options.executor,
|
|
1032
|
+
remoteEnv: options.remoteEnv,
|
|
1033
|
+
})
|
|
1034
|
+
: undefined;
|
|
1035
|
+
try {
|
|
1036
|
+
const sdkQuery = query({
|
|
1037
|
+
prompt: singlePrompt(),
|
|
1038
|
+
options: {
|
|
1039
|
+
cwd: options.cwd,
|
|
1040
|
+
resume: options.sessionId,
|
|
1041
|
+
abortController,
|
|
1042
|
+
permissionMode: "default",
|
|
1043
|
+
canUseTool: async () => ({
|
|
1044
|
+
behavior: "deny",
|
|
1045
|
+
message: "Prompt-cache keepalive does not run tools",
|
|
1046
|
+
interrupt: true,
|
|
1047
|
+
}),
|
|
1048
|
+
systemPrompt: this.getSystemPrompt(options.globalInstructions),
|
|
1049
|
+
settingSources: ["user", "project", "local"],
|
|
1050
|
+
includePartialMessages: false,
|
|
1051
|
+
persistSession: false,
|
|
1052
|
+
maxTurns: 1,
|
|
1053
|
+
maxBudgetUsd: CLAUDE_PROMPT_CACHE_KEEPALIVE_MAX_BUDGET_USD,
|
|
1054
|
+
model: withExtendedClaudeContext(options.model),
|
|
1055
|
+
thinking: options.thinking,
|
|
1056
|
+
effort: options.effort,
|
|
1057
|
+
pathToClaudeCodeExecutable: options.pathToClaudeCodeExecutable,
|
|
1058
|
+
env: options.env,
|
|
1059
|
+
spawnClaudeCodeProcess,
|
|
1060
|
+
},
|
|
1061
|
+
});
|
|
1062
|
+
let usage;
|
|
1063
|
+
for await (const message of sdkQuery) {
|
|
1064
|
+
usage = extractPromptCacheRefreshUsage(message) ?? usage;
|
|
1065
|
+
if (message.type === "result") {
|
|
1066
|
+
break;
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
return {
|
|
1070
|
+
mode: "no-context-pollution-nudge",
|
|
1071
|
+
refreshed: true,
|
|
1072
|
+
usage,
|
|
1073
|
+
};
|
|
1074
|
+
}
|
|
1075
|
+
finally {
|
|
1076
|
+
clearTimeout(timeout);
|
|
1077
|
+
abortController.abort();
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
/**
|
|
1081
|
+
* Fork a session's transcript into a new resumable session via the Agent
|
|
1082
|
+
* SDK (`forkSession`): copies the jsonl with remapped UUIDs, optionally
|
|
1083
|
+
* sliced at `upToMessageId`. The kept prefix is byte-identical to the
|
|
1084
|
+
* source, so provider prompt-cache warmth carries over on resume.
|
|
1085
|
+
*/
|
|
1086
|
+
async forkSession(options) {
|
|
1087
|
+
return sdkForkSession(options.sessionId, {
|
|
1088
|
+
dir: options.cwd,
|
|
1089
|
+
upToMessageId: options.upToMessageId,
|
|
1090
|
+
title: options.title,
|
|
1091
|
+
});
|
|
1092
|
+
}
|
|
620
1093
|
/**
|
|
621
1094
|
* Start a new Claude session.
|
|
622
1095
|
*/
|
|
@@ -624,6 +1097,18 @@ export class ClaudeProvider {
|
|
|
624
1097
|
const log = getLogger();
|
|
625
1098
|
const queue = new MessageQueue();
|
|
626
1099
|
const abortController = new AbortController();
|
|
1100
|
+
const agentctlSessionEnvBridge = options.executor
|
|
1101
|
+
? null
|
|
1102
|
+
: createAgentctlSessionEnvBridge(options.resumeSessionId);
|
|
1103
|
+
const claudeEnv = agentctlSessionEnvBridge
|
|
1104
|
+
? agentctlSessionEnvBridge.extendEnv(this.getEnv())
|
|
1105
|
+
: this.getEnv();
|
|
1106
|
+
const remoteEnv = options.executor && options.resumeSessionId
|
|
1107
|
+
? {
|
|
1108
|
+
...options.remoteEnv,
|
|
1109
|
+
AGENTCTL_SESSION_ID: options.resumeSessionId,
|
|
1110
|
+
}
|
|
1111
|
+
: options.remoteEnv;
|
|
627
1112
|
// Effective cwd for the session (may be translated for remote executors)
|
|
628
1113
|
let effectiveCwd = options.cwd;
|
|
629
1114
|
// If remote executor specified, test connection first
|
|
@@ -700,7 +1185,7 @@ export class ClaudeProvider {
|
|
|
700
1185
|
if (options.executor) {
|
|
701
1186
|
spawnClaudeCodeProcess = createRemoteSpawn({
|
|
702
1187
|
host: options.executor,
|
|
703
|
-
remoteEnv
|
|
1188
|
+
remoteEnv,
|
|
704
1189
|
});
|
|
705
1190
|
}
|
|
706
1191
|
else if (USE_SPAWN_WRAPPER) {
|
|
@@ -790,6 +1275,7 @@ export class ClaudeProvider {
|
|
|
790
1275
|
return proc;
|
|
791
1276
|
};
|
|
792
1277
|
}
|
|
1278
|
+
const providerRetention = new ClaudeProviderRetentionTracker(options.onProviderRetentionChange);
|
|
793
1279
|
// Create the SDK query with our message generator
|
|
794
1280
|
let sdkQuery;
|
|
795
1281
|
try {
|
|
@@ -798,6 +1284,7 @@ export class ClaudeProvider {
|
|
|
798
1284
|
options: {
|
|
799
1285
|
cwd: effectiveCwd,
|
|
800
1286
|
resume: options.resumeSessionId,
|
|
1287
|
+
resumeSessionAt: options.resumeSessionAt,
|
|
801
1288
|
abortController,
|
|
802
1289
|
// Pass permission mode to SDK for system prompt configuration.
|
|
803
1290
|
// However, for "bypassPermissions" we pass "default" to the SDK so it always
|
|
@@ -812,18 +1299,31 @@ export class ClaudeProvider {
|
|
|
812
1299
|
includePartialMessages: true,
|
|
813
1300
|
promptSuggestions: options.promptSuggestions === true,
|
|
814
1301
|
// Model, thinking, and effort options
|
|
815
|
-
model: options.model,
|
|
1302
|
+
model: withExtendedClaudeContext(options.model),
|
|
816
1303
|
thinking: options.thinking,
|
|
817
1304
|
effort: options.effort,
|
|
818
1305
|
pathToClaudeCodeExecutable,
|
|
819
1306
|
// Filter env to exclude npm_*, yep-anywhere specific, and other irrelevant vars
|
|
820
|
-
env:
|
|
1307
|
+
env: claudeEnv,
|
|
1308
|
+
hooks: {
|
|
1309
|
+
Stop: [
|
|
1310
|
+
{
|
|
1311
|
+
hooks: [
|
|
1312
|
+
async (input) => {
|
|
1313
|
+
providerRetention.observeStopHook(input);
|
|
1314
|
+
return { continue: true };
|
|
1315
|
+
},
|
|
1316
|
+
],
|
|
1317
|
+
},
|
|
1318
|
+
],
|
|
1319
|
+
},
|
|
821
1320
|
// Remote execution via SSH
|
|
822
1321
|
spawnClaudeCodeProcess,
|
|
823
1322
|
},
|
|
824
1323
|
});
|
|
825
1324
|
}
|
|
826
1325
|
catch (error) {
|
|
1326
|
+
agentctlSessionEnvBridge?.cleanup();
|
|
827
1327
|
// Handle common SDK initialization errors
|
|
828
1328
|
if (error instanceof Error) {
|
|
829
1329
|
if (error.message.includes("Claude Code executable not found")) {
|
|
@@ -842,17 +1342,28 @@ export class ClaudeProvider {
|
|
|
842
1342
|
const wrappedIterator = this.wrapIterator(sdkQuery, {
|
|
843
1343
|
executor: options.executor,
|
|
844
1344
|
cwd: effectiveCwd,
|
|
845
|
-
remoteEnv
|
|
1345
|
+
remoteEnv,
|
|
1346
|
+
providerRetention,
|
|
846
1347
|
});
|
|
1348
|
+
const iterator = agentctlSessionEnvBridge
|
|
1349
|
+
? withCleanup(wrappedIterator, () => agentctlSessionEnvBridge.cleanup())
|
|
1350
|
+
: wrappedIterator;
|
|
847
1351
|
const isCapturedProcessAlive = USE_SPAWN_WRAPPER && !options.executor
|
|
848
1352
|
? () => capturedProcess !== null &&
|
|
849
1353
|
capturedProcess.exitCode === null &&
|
|
850
1354
|
!capturedProcess.killed
|
|
851
1355
|
: undefined;
|
|
852
1356
|
return {
|
|
853
|
-
iterator
|
|
1357
|
+
iterator,
|
|
854
1358
|
queue,
|
|
855
|
-
abort: () =>
|
|
1359
|
+
abort: () => {
|
|
1360
|
+
abortController.abort();
|
|
1361
|
+
agentctlSessionEnvBridge?.cleanup();
|
|
1362
|
+
},
|
|
1363
|
+
steer: async (message) => {
|
|
1364
|
+
queue.push(message);
|
|
1365
|
+
return true;
|
|
1366
|
+
},
|
|
856
1367
|
isProcessAlive: isCapturedProcessAlive,
|
|
857
1368
|
probeLiveness: () => probeClaudeControlLiveness(sdkQuery, {
|
|
858
1369
|
isProcessAlive: isCapturedProcessAlive,
|
|
@@ -860,6 +1371,22 @@ export class ClaudeProvider {
|
|
|
860
1371
|
get pid() {
|
|
861
1372
|
return capturedProcess?.pid;
|
|
862
1373
|
},
|
|
1374
|
+
getProviderRetention: () => providerRetention.getSnapshot(),
|
|
1375
|
+
refreshPromptCache: ({ sessionId }) => this.refreshPromptCache({
|
|
1376
|
+
sessionId,
|
|
1377
|
+
cwd: effectiveCwd,
|
|
1378
|
+
model: withExtendedClaudeContext(options.model),
|
|
1379
|
+
thinking: options.thinking,
|
|
1380
|
+
effort: options.effort,
|
|
1381
|
+
globalInstructions: options.globalInstructions,
|
|
1382
|
+
executor: options.executor,
|
|
1383
|
+
remoteEnv,
|
|
1384
|
+
pathToClaudeCodeExecutable,
|
|
1385
|
+
env: claudeEnv,
|
|
1386
|
+
}),
|
|
1387
|
+
publishAgentctlSessionId: (sessionId) => {
|
|
1388
|
+
agentctlSessionEnvBridge?.publishSessionId(sessionId);
|
|
1389
|
+
},
|
|
863
1390
|
setMaxThinkingTokens: (tokens) => sdkQuery.setMaxThinkingTokens(tokens),
|
|
864
1391
|
interrupt: async () => {
|
|
865
1392
|
await sdkQuery.interrupt();
|
|
@@ -868,13 +1395,7 @@ export class ClaudeProvider {
|
|
|
868
1395
|
supportedModels: async () => {
|
|
869
1396
|
const models = await sdkQuery.supportedModels();
|
|
870
1397
|
// Map SDK ModelInfo (value, displayName, description) to our ModelInfo (id, name, description)
|
|
871
|
-
const mappedModels = mergeClaudeModels(models.map((
|
|
872
|
-
id: m.value,
|
|
873
|
-
name: m.displayName,
|
|
874
|
-
description: m.description,
|
|
875
|
-
supportsEffort: m.supportsEffort,
|
|
876
|
-
supportedEffortLevels: mapClaudeSupportedEffortLevels(m.supportedEffortLevels),
|
|
877
|
-
})));
|
|
1398
|
+
const mappedModels = mergeClaudeModels(models.map((model) => mapClaudeSdkModel(model)));
|
|
878
1399
|
// Update cache for future getAvailableModels() calls
|
|
879
1400
|
cachedModels = mappedModels;
|
|
880
1401
|
return mappedModels;
|
|
@@ -888,7 +1409,7 @@ export class ClaudeProvider {
|
|
|
888
1409
|
argumentHint: c.argumentHint || undefined,
|
|
889
1410
|
})));
|
|
890
1411
|
},
|
|
891
|
-
setModel: (model) => sdkQuery.setModel(model),
|
|
1412
|
+
setModel: (model) => sdkQuery.setModel(withExtendedClaudeContext(model)),
|
|
892
1413
|
};
|
|
893
1414
|
}
|
|
894
1415
|
/**
|
|
@@ -907,6 +1428,7 @@ export class ClaudeProvider {
|
|
|
907
1428
|
message.session_id ?? sessionId;
|
|
908
1429
|
logSDKMessage(sessionId, message, { provider: "claude" });
|
|
909
1430
|
const converted = this.convertMessage(message);
|
|
1431
|
+
remoteOptions?.providerRetention?.observeMessage(converted);
|
|
910
1432
|
yield converted;
|
|
911
1433
|
// For remote sessions, sync session files after result messages
|
|
912
1434
|
// This keeps the local UI up-to-date with remote progress
|