@undefineds.co/linx 0.3.26 → 0.3.28
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 +4 -3
- package/dist/index.js +3 -832
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-stream-bridge-contract.js +2 -0
- package/dist/lib/agent-stream-bridge-contract.js.map +1 -0
- package/dist/lib/auto-mode/auth.js +100 -2
- package/dist/lib/auto-mode/auth.js.map +1 -1
- package/dist/lib/auto-mode/backend-kind.js +13 -0
- package/dist/lib/auto-mode/backend-kind.js.map +1 -0
- package/dist/lib/auto-mode/display.js +1 -1
- package/dist/lib/auto-mode/display.js.map +1 -1
- package/dist/lib/auto-mode/format.js +1 -1
- package/dist/lib/auto-mode/format.js.map +1 -1
- package/dist/lib/auto-mode/hooks/{index.js → registry.js} +1 -1
- package/dist/lib/auto-mode/hooks/registry.js.map +1 -0
- package/dist/lib/auto-mode/pod-ai.js +1 -14
- package/dist/lib/auto-mode/pod-ai.js.map +1 -1
- package/dist/lib/auto-mode/pod-approval-store.js +596 -0
- package/dist/lib/auto-mode/pod-approval-store.js.map +1 -0
- package/dist/lib/auto-mode/pod-approval.js +4 -607
- package/dist/lib/auto-mode/pod-approval.js.map +1 -1
- package/dist/lib/auto-mode/pod-persistence-builders.js +266 -0
- package/dist/lib/auto-mode/pod-persistence-builders.js.map +1 -0
- package/dist/lib/auto-mode/pod-persistence.js +1 -281
- package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
- package/dist/lib/auto-mode/runner.js +41 -378
- package/dist/lib/auto-mode/runner.js.map +1 -1
- package/dist/lib/auto-mode/runtime.js +25 -0
- package/dist/lib/auto-mode/runtime.js.map +1 -0
- package/dist/lib/auto-mode/secretary-reaction-window.js +12 -0
- package/dist/lib/auto-mode/secretary-reaction-window.js.map +1 -0
- package/dist/lib/auto-mode/secretary-runtime-config.js +66 -0
- package/dist/lib/auto-mode/secretary-runtime-config.js.map +1 -0
- package/dist/lib/auto-mode/secretary.js +2 -64
- package/dist/lib/auto-mode/secretary.js.map +1 -1
- package/dist/lib/auto-mode/session-log.js +25 -0
- package/dist/lib/auto-mode/session-log.js.map +1 -0
- package/dist/lib/auto-mode/shell-command.js +172 -0
- package/dist/lib/auto-mode/shell-command.js.map +1 -0
- package/dist/lib/auto-mode-command.js +2 -1
- package/dist/lib/auto-mode-command.js.map +1 -1
- package/dist/lib/backend-command-router-contract.js +2 -0
- package/dist/lib/backend-command-router-contract.js.map +1 -0
- package/dist/lib/{pi-adapter/backend-credentials.js → backend-credentials.js} +8 -8
- package/dist/lib/backend-credentials.js.map +1 -0
- package/dist/lib/linx-ai-connect-command.js +201 -0
- package/dist/lib/linx-ai-connect-command.js.map +1 -0
- package/dist/lib/linx-assistant-message-rendering.js +33 -0
- package/dist/lib/linx-assistant-message-rendering.js.map +1 -0
- package/dist/lib/linx-auto-command-routing.js +53 -0
- package/dist/lib/linx-auto-command-routing.js.map +1 -0
- package/dist/lib/linx-auto-editor-indicator-host.js +15 -0
- package/dist/lib/linx-auto-editor-indicator-host.js.map +1 -0
- package/dist/lib/linx-auto-editor-indicator.js +56 -0
- package/dist/lib/linx-auto-editor-indicator.js.map +1 -0
- package/dist/lib/linx-auto-mode-cli-admission.js +16 -0
- package/dist/lib/linx-auto-mode-cli-admission.js.map +1 -0
- package/dist/lib/linx-backend-command-router.js +64 -0
- package/dist/lib/linx-backend-command-router.js.map +1 -0
- package/dist/lib/linx-backend-event-source.js +32 -0
- package/dist/lib/linx-backend-event-source.js.map +1 -0
- package/dist/lib/linx-chat-completion-projection.js +276 -0
- package/dist/lib/linx-chat-completion-projection.js.map +1 -0
- package/dist/lib/linx-cloud-errors.js +1 -0
- package/dist/lib/linx-cloud-errors.js.map +1 -1
- package/dist/lib/linx-cloud-models.js +75 -0
- package/dist/lib/linx-cloud-models.js.map +1 -0
- package/dist/lib/linx-cloud-runtime-auth.js +146 -0
- package/dist/lib/linx-cloud-runtime-auth.js.map +1 -0
- package/dist/lib/linx-cloud-runtime-coordinator.js +102 -0
- package/dist/lib/linx-cloud-runtime-coordinator.js.map +1 -0
- package/dist/lib/linx-codex-plugin-command.js +56 -0
- package/dist/lib/linx-codex-plugin-command.js.map +1 -0
- package/dist/lib/linx-command-autocomplete.js +123 -0
- package/dist/lib/linx-command-autocomplete.js.map +1 -0
- package/dist/lib/linx-completion-backend.js +2 -0
- package/dist/lib/linx-completion-backend.js.map +1 -0
- package/dist/lib/linx-config-command.js +12 -0
- package/dist/lib/linx-config-command.js.map +1 -0
- package/dist/lib/linx-editor-component-router.js +83 -0
- package/dist/lib/linx-editor-component-router.js.map +1 -0
- package/dist/lib/linx-extension-ui-context-router.js +43 -0
- package/dist/lib/linx-extension-ui-context-router.js.map +1 -0
- package/dist/lib/linx-external-open-host.js +8 -0
- package/dist/lib/linx-external-open-host.js.map +1 -0
- package/dist/lib/linx-external-url.js +16 -0
- package/dist/lib/linx-external-url.js.map +1 -0
- package/dist/lib/linx-footer-patch.js +52 -0
- package/dist/lib/linx-footer-patch.js.map +1 -0
- package/dist/lib/linx-input-command-routing.js +65 -0
- package/dist/lib/linx-input-command-routing.js.map +1 -0
- package/dist/lib/linx-interactive-auth-state-host.js +50 -0
- package/dist/lib/linx-interactive-auth-state-host.js.map +1 -0
- package/dist/lib/linx-interactive-autocomplete-host.js +32 -0
- package/dist/lib/linx-interactive-autocomplete-host.js.map +1 -0
- package/dist/lib/linx-interactive-bootstrap.js +66 -0
- package/dist/lib/linx-interactive-bootstrap.js.map +1 -0
- package/dist/lib/linx-interactive-branding.js +24 -0
- package/dist/lib/linx-interactive-branding.js.map +1 -0
- package/dist/lib/linx-interactive-chat-text-host.js +16 -0
- package/dist/lib/linx-interactive-chat-text-host.js.map +1 -0
- package/dist/lib/linx-interactive-command-routing-host.js +31 -0
- package/dist/lib/linx-interactive-command-routing-host.js.map +1 -0
- package/dist/lib/linx-interactive-command-routing.js +75 -0
- package/dist/lib/linx-interactive-command-routing.js.map +1 -0
- package/dist/lib/linx-interactive-command-surface.js +16 -0
- package/dist/lib/linx-interactive-command-surface.js.map +1 -0
- package/dist/lib/linx-interactive-editor-text-host.js +16 -0
- package/dist/lib/linx-interactive-editor-text-host.js.map +1 -0
- package/dist/lib/linx-interactive-error-display.js +8 -0
- package/dist/lib/linx-interactive-error-display.js.map +1 -0
- package/dist/lib/linx-interactive-event-router.js +91 -0
- package/dist/lib/linx-interactive-event-router.js.map +1 -0
- package/dist/lib/linx-interactive-extension-input-host.js +7 -0
- package/dist/lib/linx-interactive-extension-input-host.js.map +1 -0
- package/dist/lib/linx-interactive-extension-selector-host.js +12 -0
- package/dist/lib/linx-interactive-extension-selector-host.js.map +1 -0
- package/dist/lib/linx-interactive-header-host.js +14 -0
- package/dist/lib/linx-interactive-header-host.js.map +1 -0
- package/dist/lib/linx-interactive-lifecycle-host.js +4 -0
- package/dist/lib/linx-interactive-lifecycle-host.js.map +1 -0
- package/dist/lib/linx-interactive-login-ui-router.js +81 -0
- package/dist/lib/linx-interactive-login-ui-router.js.map +1 -0
- package/dist/lib/linx-interactive-model-registry-host.js +14 -0
- package/dist/lib/linx-interactive-model-registry-host.js.map +1 -0
- package/dist/lib/linx-interactive-post-init.js +60 -0
- package/dist/lib/linx-interactive-post-init.js.map +1 -0
- package/dist/lib/linx-interactive-provider-count-host.js +4 -0
- package/dist/lib/linx-interactive-provider-count-host.js.map +1 -0
- package/dist/lib/linx-interactive-run-router.js +43 -0
- package/dist/lib/linx-interactive-run-router.js.map +1 -0
- package/dist/lib/linx-interactive-runtime-host.js +113 -0
- package/dist/lib/linx-interactive-runtime-host.js.map +1 -0
- package/dist/lib/linx-interactive-selector-host.js +12 -0
- package/dist/lib/linx-interactive-selector-host.js.map +1 -0
- package/dist/lib/linx-interactive-shell-state.js +215 -0
- package/dist/lib/linx-interactive-shell-state.js.map +1 -0
- package/dist/lib/linx-interactive-status-display.js +9 -0
- package/dist/lib/linx-interactive-status-display.js.map +1 -0
- package/dist/lib/linx-interactive-stop-router.js +85 -0
- package/dist/lib/linx-interactive-stop-router.js.map +1 -0
- package/dist/lib/linx-interactive-streaming-message-host.js +11 -0
- package/dist/lib/linx-interactive-streaming-message-host.js.map +1 -0
- package/dist/lib/linx-interactive-submit-router.js +63 -0
- package/dist/lib/linx-interactive-submit-router.js.map +1 -0
- package/dist/lib/linx-interactive-update-router.js +78 -0
- package/dist/lib/linx-interactive-update-router.js.map +1 -0
- package/dist/lib/linx-interactive-update-state-host.js +43 -0
- package/dist/lib/linx-interactive-update-state-host.js.map +1 -0
- package/dist/lib/linx-interactive-warning-display.js +4 -0
- package/dist/lib/linx-interactive-warning-display.js.map +1 -0
- package/dist/lib/linx-interrupt-control-host.js +22 -0
- package/dist/lib/linx-interrupt-control-host.js.map +1 -0
- package/dist/lib/linx-interrupt-control.js +116 -0
- package/dist/lib/linx-interrupt-control.js.map +1 -0
- package/dist/lib/linx-login-flow.js +566 -0
- package/dist/lib/linx-login-flow.js.map +1 -0
- package/dist/lib/linx-models-command.js +71 -0
- package/dist/lib/linx-models-command.js.map +1 -0
- package/dist/lib/linx-package-command.js +117 -0
- package/dist/lib/linx-package-command.js.map +1 -0
- package/dist/lib/linx-peer-command-routing.js +20 -0
- package/dist/lib/linx-peer-command-routing.js.map +1 -0
- package/dist/lib/linx-pi-cli-command.js +121 -0
- package/dist/lib/linx-pi-cli-command.js.map +1 -0
- package/dist/lib/linx-pi-completion-events.js +101 -0
- package/dist/lib/linx-pi-completion-events.js.map +1 -0
- package/dist/lib/linx-pi-normalized-event-stream.js +41 -0
- package/dist/lib/linx-pi-normalized-event-stream.js.map +1 -0
- package/dist/lib/linx-pi-resume-cli-admission.js +21 -0
- package/dist/lib/linx-pi-resume-cli-admission.js.map +1 -0
- package/dist/lib/linx-pi-runtime-execution.js +67 -0
- package/dist/lib/linx-pi-runtime-execution.js.map +1 -0
- package/dist/lib/linx-pi-startup-control.js +49 -0
- package/dist/lib/linx-pi-startup-control.js.map +1 -0
- package/dist/lib/linx-pi-startup-plan.js +103 -0
- package/dist/lib/linx-pi-startup-plan.js.map +1 -0
- package/dist/lib/linx-pi-stream-errors.js +10 -0
- package/dist/lib/linx-pi-stream-errors.js.map +1 -0
- package/dist/lib/linx-pod-backed-extension-ui.js +29 -0
- package/dist/lib/linx-pod-backed-extension-ui.js.map +1 -0
- package/dist/lib/linx-pod-data-session-factory.js +19 -0
- package/dist/lib/linx-pod-data-session-factory.js.map +1 -0
- package/dist/lib/linx-pod-mirror-runtime-host.js +50 -0
- package/dist/lib/linx-pod-mirror-runtime-host.js.map +1 -0
- package/dist/lib/linx-pod-mirror-sync-cli-admission.js +18 -0
- package/dist/lib/linx-pod-mirror-sync-cli-admission.js.map +1 -0
- package/dist/lib/linx-pod-mirror-sync-command.js +30 -0
- package/dist/lib/linx-pod-mirror-sync-command.js.map +1 -0
- package/dist/lib/{pi-adapter/sync-recovery.js → linx-pod-mirror-sync-recovery.js} +13 -13
- package/dist/lib/linx-pod-mirror-sync-recovery.js.map +1 -0
- package/dist/lib/{pi-adapter/pod-mirror.js → linx-pod-mirror.js} +63 -40
- package/dist/lib/linx-pod-mirror.js.map +1 -0
- package/dist/lib/linx-restored-auto-startup.js +21 -0
- package/dist/lib/linx-restored-auto-startup.js.map +1 -0
- package/dist/lib/linx-resume-output.js +209 -0
- package/dist/lib/linx-resume-output.js.map +1 -0
- package/dist/lib/linx-retired-command.js +22 -0
- package/dist/lib/linx-retired-command.js.map +1 -0
- package/dist/lib/linx-rewind-command.js +209 -0
- package/dist/lib/linx-rewind-command.js.map +1 -0
- package/dist/lib/linx-runtime-adapter-contract.js +2 -0
- package/dist/lib/linx-runtime-adapter-contract.js.map +1 -0
- package/dist/lib/linx-runtime-adapter-defaults.js +17 -0
- package/dist/lib/linx-runtime-adapter-defaults.js.map +1 -0
- package/dist/lib/linx-runtime-adapter-dependencies.js +2 -0
- package/dist/lib/linx-runtime-adapter-dependencies.js.map +1 -0
- package/dist/lib/linx-runtime-agent-session.js +130 -0
- package/dist/lib/linx-runtime-agent-session.js.map +1 -0
- package/dist/lib/linx-runtime-auth.js +5 -0
- package/dist/lib/linx-runtime-auth.js.map +1 -0
- package/dist/lib/linx-runtime-backend-composition.js +73 -0
- package/dist/lib/linx-runtime-backend-composition.js.map +1 -0
- package/dist/lib/linx-runtime-coding-tools.js +58 -0
- package/dist/lib/linx-runtime-coding-tools.js.map +1 -0
- package/dist/lib/linx-runtime-completion-backend.js +27 -0
- package/dist/lib/linx-runtime-completion-backend.js.map +1 -0
- package/dist/lib/linx-runtime-oauth-provider.js +57 -0
- package/dist/lib/linx-runtime-oauth-provider.js.map +1 -0
- package/dist/lib/linx-runtime-provider-registration.js +33 -0
- package/dist/lib/linx-runtime-provider-registration.js.map +1 -0
- package/dist/lib/linx-runtime-resources.js +167 -0
- package/dist/lib/linx-runtime-resources.js.map +1 -0
- package/dist/lib/linx-runtime-system-prompt.js +27 -0
- package/dist/lib/linx-runtime-system-prompt.js.map +1 -0
- package/dist/lib/linx-runtime-thinking.js +21 -0
- package/dist/lib/linx-runtime-thinking.js.map +1 -0
- package/dist/lib/linx-selector-choice.js +38 -0
- package/dist/lib/linx-selector-choice.js.map +1 -0
- package/dist/lib/linx-self-update.js +113 -0
- package/dist/lib/linx-self-update.js.map +1 -0
- package/dist/lib/linx-session-command-routing-host.js +24 -0
- package/dist/lib/linx-session-command-routing-host.js.map +1 -0
- package/dist/lib/linx-session-command-routing.js +68 -0
- package/dist/lib/linx-session-command-routing.js.map +1 -0
- package/dist/lib/linx-session-cwd-router.js +15 -0
- package/dist/lib/linx-session-cwd-router.js.map +1 -0
- package/dist/lib/linx-session-history.js +388 -0
- package/dist/lib/linx-session-history.js.map +1 -0
- package/dist/lib/{pi-adapter/session.js → linx-session-manager.js} +94 -46
- package/dist/lib/linx-session-manager.js.map +1 -0
- package/dist/lib/linx-session-metadata.js +55 -0
- package/dist/lib/linx-session-metadata.js.map +1 -0
- package/dist/lib/linx-session-selector-ui.js +32 -0
- package/dist/lib/linx-session-selector-ui.js.map +1 -0
- package/dist/lib/linx-session-thinking-capability-router.js +55 -0
- package/dist/lib/linx-session-thinking-capability-router.js.map +1 -0
- package/dist/lib/linx-session-work-control.js +187 -0
- package/dist/lib/linx-session-work-control.js.map +1 -0
- package/dist/lib/linx-shell-command-executor.js +41 -0
- package/dist/lib/linx-shell-command-executor.js.map +1 -0
- package/dist/lib/linx-shell-command-router.js +151 -0
- package/dist/lib/linx-shell-command-router.js.map +1 -0
- package/dist/lib/{pi-adapter/control-state.js → linx-startup-control-state.js} +6 -6
- package/dist/lib/linx-startup-control-state.js.map +1 -0
- package/dist/lib/linx-startup-login-policy.js +48 -0
- package/dist/lib/linx-startup-login-policy.js.map +1 -0
- package/dist/lib/linx-status-line-command.js +382 -0
- package/dist/lib/linx-status-line-command.js.map +1 -0
- package/dist/lib/{status-line-command.js → linx-status-line-config-command.js} +2 -12
- package/dist/lib/linx-status-line-config-command.js.map +1 -0
- package/dist/lib/linx-status-line.js +12 -4
- package/dist/lib/linx-status-line.js.map +1 -1
- package/dist/lib/linx-stream-abort.js +12 -0
- package/dist/lib/linx-stream-abort.js.map +1 -0
- package/dist/lib/linx-stream-error-formatting.js +54 -0
- package/dist/lib/linx-stream-error-formatting.js.map +1 -0
- package/dist/lib/linx-submitted-user-message-recording.js +16 -0
- package/dist/lib/linx-submitted-user-message-recording.js.map +1 -0
- package/dist/lib/linx-symphony-interactive-command.js +493 -0
- package/dist/lib/linx-symphony-interactive-command.js.map +1 -0
- package/dist/lib/linx-terminal-title-router.js +49 -0
- package/dist/lib/linx-terminal-title-router.js.map +1 -0
- package/dist/lib/{pi-adapter/theme.js → linx-theme.js} +2 -2
- package/dist/lib/linx-theme.js.map +1 -0
- package/dist/lib/linx-top-level-command-admission.js +27 -0
- package/dist/lib/linx-top-level-command-admission.js.map +1 -0
- package/dist/lib/linx-update-notification.js +209 -0
- package/dist/lib/linx-update-notification.js.map +1 -0
- package/dist/lib/linx-welcome-header.js +148 -0
- package/dist/lib/linx-welcome-header.js.map +1 -0
- package/dist/lib/linx-workspace-command.js +45 -0
- package/dist/lib/linx-workspace-command.js.map +1 -0
- package/dist/lib/native-backend-command-router.js +25 -0
- package/dist/lib/native-backend-command-router.js.map +1 -0
- package/dist/lib/native-backend-proxy.js +2 -0
- package/dist/lib/native-backend-proxy.js.map +1 -0
- package/dist/lib/native-backend-stream-backend.js +15 -0
- package/dist/lib/native-backend-stream-backend.js.map +1 -0
- package/dist/lib/oidc-auth.js +2 -4
- package/dist/lib/oidc-auth.js.map +1 -1
- package/dist/lib/pi-adapter/runtime.js +32 -841
- package/dist/lib/pi-adapter/runtime.js.map +1 -1
- package/dist/lib/pi-adapter/stream.js +17 -516
- package/dist/lib/pi-adapter/stream.js.map +1 -1
- package/dist/lib/{pi-adapter/pod-approval.js → pod-backed-extension-ui-context.js} +2 -2
- package/dist/lib/pod-backed-extension-ui-context.js.map +1 -0
- package/dist/lib/pod-chat-store-runtime.js +38 -0
- package/dist/lib/pod-chat-store-runtime.js.map +1 -0
- package/dist/lib/pod-chat-store.js +15 -65
- package/dist/lib/pod-chat-store.js.map +1 -1
- package/dist/lib/{pi-adapter/pod-mirror-mapping.js → pod-mirror-mapping.js} +8 -18
- package/dist/lib/pod-mirror-mapping.js.map +1 -0
- package/dist/lib/{pi-adapter/pod-native.js → pod-native.js} +1 -1
- package/dist/lib/pod-native.js.map +1 -0
- package/dist/lib/pod-status-output.js.map +1 -0
- package/dist/lib/{pi-adapter/auto-input-controller.js → secretary-auto-input-controller.js} +62 -77
- package/dist/lib/secretary-auto-input-controller.js.map +1 -0
- package/dist/lib/{pi-adapter/session-control.js → session-control.js} +80 -29
- package/dist/lib/session-control.js.map +1 -0
- package/dist/lib/shell-lifecycle.js +199 -0
- package/dist/lib/shell-lifecycle.js.map +1 -0
- package/dist/lib/solid-local-store.js +3 -3
- package/dist/lib/solid-local-store.js.map +1 -1
- package/dist/lib/symphony/pod-projection.js +1 -31
- package/dist/lib/symphony/pod-projection.js.map +1 -1
- package/dist/lib/{symphony-command.js → symphony/run.js} +11 -16
- package/dist/lib/symphony/run.js.map +1 -0
- package/dist/lib/symphony/runtime.js +30 -0
- package/dist/lib/symphony/runtime.js.map +1 -0
- package/dist/lib/symphony/status.js +242 -0
- package/dist/lib/symphony/status.js.map +1 -0
- package/dist/linx-cli-app.js +70 -0
- package/dist/linx-cli-app.js.map +1 -0
- package/dist/linx-cli-runtime-adapter-factory.js +12 -0
- package/dist/linx-cli-runtime-adapter-factory.js.map +1 -0
- package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/dist/lib/auto-mode/hooks/index.js.map +0 -1
- package/dist/lib/auto-mode/index.js +0 -10
- package/dist/lib/auto-mode/index.js.map +0 -1
- package/dist/lib/codex-plugin/index.js +0 -5
- package/dist/lib/codex-plugin/index.js.map +0 -1
- package/dist/lib/pi-adapter/auth.js +0 -68
- package/dist/lib/pi-adapter/auth.js.map +0 -1
- package/dist/lib/pi-adapter/auto-input-controller.js.map +0 -1
- package/dist/lib/pi-adapter/backend-command.js +0 -2
- package/dist/lib/pi-adapter/backend-command.js.map +0 -1
- package/dist/lib/pi-adapter/backend-credentials.js.map +0 -1
- package/dist/lib/pi-adapter/branding.js +0 -1188
- package/dist/lib/pi-adapter/branding.js.map +0 -1
- package/dist/lib/pi-adapter/control-state.js.map +0 -1
- package/dist/lib/pi-adapter/index.js +0 -4
- package/dist/lib/pi-adapter/index.js.map +0 -1
- package/dist/lib/pi-adapter/interactive.js +0 -3191
- package/dist/lib/pi-adapter/interactive.js.map +0 -1
- package/dist/lib/pi-adapter/pod-approval.js.map +0 -1
- package/dist/lib/pi-adapter/pod-mirror-mapping.js.map +0 -1
- package/dist/lib/pi-adapter/pod-mirror.js.map +0 -1
- package/dist/lib/pi-adapter/pod-native.js.map +0 -1
- package/dist/lib/pi-adapter/pod-status-output.js.map +0 -1
- package/dist/lib/pi-adapter/pod-tools.js +0 -140
- package/dist/lib/pi-adapter/pod-tools.js.map +0 -1
- package/dist/lib/pi-adapter/session-control.js.map +0 -1
- package/dist/lib/pi-adapter/session.js.map +0 -1
- package/dist/lib/pi-adapter/sync-recovery.js.map +0 -1
- package/dist/lib/pi-adapter/theme.js.map +0 -1
- package/dist/lib/pi-adapter/web-fetch.js +0 -170
- package/dist/lib/pi-adapter/web-fetch.js.map +0 -1
- package/dist/lib/status-line-command.js.map +0 -1
- package/dist/lib/symphony-command.js.map +0 -1
- /package/dist/lib/{pi-adapter/pod-status-output.js → pod-status-output.js} +0 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
export function captureLinxSessionRetryTurn(source) {
|
|
2
|
+
const session = resolveLinxSessionHistorySession(source);
|
|
3
|
+
return captureLinxRetryTurnFromSessionManager(session?.sessionManager, session?.state?.messages);
|
|
4
|
+
}
|
|
5
|
+
export function restoreLinxSessionHistoryBranch(source, leafId) {
|
|
6
|
+
const session = resolveLinxSessionHistorySession(source);
|
|
7
|
+
restoreSessionHistoryBranchWithManager(session?.sessionManager, leafId, session);
|
|
8
|
+
}
|
|
9
|
+
function captureLinxRetryTurnFromSessionManager(sessionManager, fallbackMessages) {
|
|
10
|
+
const leafId = typeof sessionManager?.getLeafId === 'function'
|
|
11
|
+
? sessionManager.getLeafId()
|
|
12
|
+
: undefined;
|
|
13
|
+
const leafEntry = leafId && typeof sessionManager?.getEntry === 'function'
|
|
14
|
+
? sessionManager.getEntry(leafId)
|
|
15
|
+
: undefined;
|
|
16
|
+
const leafMessage = leafEntry?.type === 'message' ? leafEntry.message : undefined;
|
|
17
|
+
const userEntry = findLastUserMessageEntry(sessionManager, leafId);
|
|
18
|
+
const promptText = extractUserMessageText(userEntry?.message)
|
|
19
|
+
?? extractUserMessageText(leafMessage)
|
|
20
|
+
?? findLastUserMessageText(fallbackMessages);
|
|
21
|
+
return {
|
|
22
|
+
continueFromId: userEntry?.id ?? (leafMessage?.role === 'user' ? leafId : undefined),
|
|
23
|
+
promptText,
|
|
24
|
+
promptParentId: userEntry?.parentId ?? (leafMessage?.role === 'user' ? normalizeParentId(leafEntry.parentId) : undefined),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function restoreSessionHistoryBranchWithManager(sessionManager, leafId, session) {
|
|
28
|
+
if (!sessionManager) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (typeof leafId === 'string' && leafId) {
|
|
32
|
+
sessionManager.branch?.(leafId);
|
|
33
|
+
}
|
|
34
|
+
else if (leafId === null) {
|
|
35
|
+
sessionManager.resetLeaf?.();
|
|
36
|
+
}
|
|
37
|
+
const context = sessionManager.buildSessionContext?.();
|
|
38
|
+
if (context?.messages && session?.agent?.state) {
|
|
39
|
+
session.agent.state.messages = context.messages;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function findLastUserMessageText(messages) {
|
|
43
|
+
if (!Array.isArray(messages)) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
47
|
+
const text = extractUserMessageText(messages[index]);
|
|
48
|
+
if (text) {
|
|
49
|
+
return text;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
function findLastUserMessageEntry(sessionManager, leafId) {
|
|
55
|
+
const branch = typeof sessionManager?.getBranch === 'function' && typeof leafId === 'string'
|
|
56
|
+
? sessionManager.getBranch(leafId)
|
|
57
|
+
: undefined;
|
|
58
|
+
const entries = Array.isArray(branch) && branch.length > 0
|
|
59
|
+
? branch
|
|
60
|
+
: typeof sessionManager?.getEntries === 'function'
|
|
61
|
+
? sessionManager.getEntries()
|
|
62
|
+
: [];
|
|
63
|
+
if (!Array.isArray(entries)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
for (let index = entries.length - 1; index >= 0; index -= 1) {
|
|
67
|
+
const entry = entries[index];
|
|
68
|
+
if (isRecord(entry)
|
|
69
|
+
&& entry.type === 'message'
|
|
70
|
+
&& typeof entry.id === 'string'
|
|
71
|
+
&& isRecord(entry.message)
|
|
72
|
+
&& entry.message.role === 'user') {
|
|
73
|
+
return {
|
|
74
|
+
id: entry.id,
|
|
75
|
+
parentId: normalizeParentId(entry.parentId),
|
|
76
|
+
message: entry.message,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
function normalizeParentId(parentId) {
|
|
83
|
+
if (typeof parentId === 'string') {
|
|
84
|
+
return parentId;
|
|
85
|
+
}
|
|
86
|
+
if (parentId === null) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
function extractUserMessageText(message) {
|
|
92
|
+
if (!isRecord(message) || message.role !== 'user') {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const content = message.content;
|
|
96
|
+
if (typeof content === 'string') {
|
|
97
|
+
return content.trim() || undefined;
|
|
98
|
+
}
|
|
99
|
+
if (!Array.isArray(content)) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const text = content
|
|
103
|
+
.filter((entry) => (isRecord(entry) && entry.type === 'text' && typeof entry.text === 'string'))
|
|
104
|
+
.map((entry) => entry.text)
|
|
105
|
+
.join('')
|
|
106
|
+
.trim();
|
|
107
|
+
return text || undefined;
|
|
108
|
+
}
|
|
109
|
+
function isRecord(value) {
|
|
110
|
+
return Boolean(value) && typeof value === 'object';
|
|
111
|
+
}
|
|
112
|
+
export function hasLinxSessionHistory(source) {
|
|
113
|
+
return Boolean(resolveLinxSessionHistoryManager(source));
|
|
114
|
+
}
|
|
115
|
+
export function getLinxActiveSessionHistoryEntries(source) {
|
|
116
|
+
const sessionManager = resolveLinxSessionHistoryManager(source);
|
|
117
|
+
return sessionManager ? getActiveSessionHistoryEntriesWithManager(sessionManager) : [];
|
|
118
|
+
}
|
|
119
|
+
export function getLinxActiveSessionAgentMessages(source) {
|
|
120
|
+
const messages = resolveLinxSessionHistorySession(source)?.agent?.state?.messages;
|
|
121
|
+
return Array.isArray(messages) ? messages : [];
|
|
122
|
+
}
|
|
123
|
+
export function collectLinxRewindUserMessages(source) {
|
|
124
|
+
const sessionManager = resolveLinxSessionHistoryManager(source);
|
|
125
|
+
return sessionManager ? collectRewindUserMessagesWithManager(sessionManager) : [];
|
|
126
|
+
}
|
|
127
|
+
export function assertLinxRewindUserEntryTarget(source, entryId) {
|
|
128
|
+
const sessionManager = resolveLinxSessionHistoryManager(source);
|
|
129
|
+
if (!sessionManager) {
|
|
130
|
+
throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
|
|
131
|
+
}
|
|
132
|
+
assertRewindUserEntryTargetWithManager(sessionManager, entryId);
|
|
133
|
+
}
|
|
134
|
+
function getActiveSessionHistoryEntriesWithManager(sessionManager) {
|
|
135
|
+
return getActiveSessionBranch(sessionManager);
|
|
136
|
+
}
|
|
137
|
+
function collectRewindUserMessagesWithManager(sessionManager) {
|
|
138
|
+
return getActiveSessionHistoryEntriesWithManager(sessionManager)
|
|
139
|
+
.filter((entry) => entry?.type === 'message' && entry.message?.role === 'user')
|
|
140
|
+
.map((entry) => ({
|
|
141
|
+
id: String(entry.id),
|
|
142
|
+
text: extractRewindMessageText(entry.message?.content) || '(empty user message)',
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
function assertRewindUserEntryTargetWithManager(sessionManager, entryId) {
|
|
146
|
+
const entry = resolveRewindUserEntry(sessionManager, entryId);
|
|
147
|
+
if (!entry) {
|
|
148
|
+
throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
export function rewindLinxSessionHistoryByTurns(source, turns) {
|
|
152
|
+
const sessionManager = resolveLinxSessionHistoryManager(source);
|
|
153
|
+
return sessionManager
|
|
154
|
+
? rewindSessionHistoryByTurnsWithManager(sessionManager, turns, resolveLinxSessionHistorySession(source))
|
|
155
|
+
: undefined;
|
|
156
|
+
}
|
|
157
|
+
export function rewindLinxSessionHistoryBeforeUserEntry(source, entryId) {
|
|
158
|
+
const sessionManager = resolveLinxSessionHistoryManager(source);
|
|
159
|
+
return sessionManager
|
|
160
|
+
? rewindSessionHistoryBeforeUserEntryWithManager(sessionManager, entryId, resolveLinxSessionHistorySession(source))
|
|
161
|
+
: undefined;
|
|
162
|
+
}
|
|
163
|
+
function rewindSessionHistoryByTurnsWithManager(sessionManager, turns, session) {
|
|
164
|
+
const previousState = captureLinxRewindSessionState(sessionManager);
|
|
165
|
+
const previousBranch = getActiveSessionBranch(sessionManager);
|
|
166
|
+
const result = rewindSessionHistoryByTurns(sessionManager, turns);
|
|
167
|
+
if (result.rewound === 0) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const cleanResult = materializeCleanRewindSession(sessionManager, result.targetLeafId, previousState);
|
|
171
|
+
syncAgentStateFromSessionManager(session, sessionManager);
|
|
172
|
+
return {
|
|
173
|
+
rewound: result.rewound,
|
|
174
|
+
targetLeafId: result.targetLeafId,
|
|
175
|
+
previousState,
|
|
176
|
+
cleanResult,
|
|
177
|
+
abandonedEntries: collectAbandonedRewindEntries(previousBranch, result.targetLeafId),
|
|
178
|
+
remainingMessages: countActiveAgentMessages(session),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function rewindSessionHistoryBeforeUserEntryWithManager(sessionManager, entryId, session) {
|
|
182
|
+
const entry = resolveRewindUserEntry(sessionManager, entryId);
|
|
183
|
+
if (!entry) {
|
|
184
|
+
throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
|
|
185
|
+
}
|
|
186
|
+
const previousState = captureLinxRewindSessionState(sessionManager);
|
|
187
|
+
const previousBranch = getActiveSessionBranch(sessionManager);
|
|
188
|
+
const targetLeafId = typeof entry.parentId === 'string' && entry.parentId ? entry.parentId : null;
|
|
189
|
+
moveSessionManagerLeaf(sessionManager, targetLeafId);
|
|
190
|
+
const cleanResult = materializeCleanRewindSession(sessionManager, targetLeafId, previousState);
|
|
191
|
+
syncAgentStateFromSessionManager(session, sessionManager);
|
|
192
|
+
return {
|
|
193
|
+
rewound: 1,
|
|
194
|
+
targetLeafId,
|
|
195
|
+
previousState,
|
|
196
|
+
cleanResult,
|
|
197
|
+
abandonedEntries: collectAbandonedRewindEntries(previousBranch, targetLeafId),
|
|
198
|
+
remainingMessages: countActiveAgentMessages(session),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
export function describeLinxRewindTarget(targetLeafId, cleanResult) {
|
|
202
|
+
const target = targetLeafId ? `leaf ${targetLeafId}` : 'session root';
|
|
203
|
+
if (!cleanResult.materialized) {
|
|
204
|
+
return target;
|
|
205
|
+
}
|
|
206
|
+
if (cleanResult.sessionChanged && cleanResult.id) {
|
|
207
|
+
return `${target} in clean session ${cleanResult.id}`;
|
|
208
|
+
}
|
|
209
|
+
return `${target} in clean session`;
|
|
210
|
+
}
|
|
211
|
+
function resolveLinxSessionHistorySession(source) {
|
|
212
|
+
return source.session ?? source.interactive?.session ?? source.runtime?.session;
|
|
213
|
+
}
|
|
214
|
+
function resolveLinxSessionHistoryManager(source) {
|
|
215
|
+
return source.session?.sessionManager
|
|
216
|
+
?? source.interactive?.session?.sessionManager
|
|
217
|
+
?? source.interactive?.sessionManager
|
|
218
|
+
?? source.runtime?.session?.sessionManager
|
|
219
|
+
?? source.runtime?.sessionManager;
|
|
220
|
+
}
|
|
221
|
+
function resolveRewindUserEntry(sessionManager, entryId) {
|
|
222
|
+
const entry = typeof sessionManager?.getEntry === 'function'
|
|
223
|
+
? sessionManager.getEntry(entryId)
|
|
224
|
+
: getActiveSessionBranch(sessionManager).find((candidate) => candidate?.id === entryId);
|
|
225
|
+
return entry?.type === 'message' && entry.message?.role === 'user' ? entry : undefined;
|
|
226
|
+
}
|
|
227
|
+
function rewindSessionHistoryByTurns(sessionManager, turns) {
|
|
228
|
+
let rewound = 0;
|
|
229
|
+
let targetLeafId = resolveSessionManagerLeafId(sessionManager);
|
|
230
|
+
for (; rewound < turns; rewound += 1) {
|
|
231
|
+
const branch = getActiveSessionBranch(sessionManager);
|
|
232
|
+
const latestUserEntry = findLatestUserMessageEntry(branch);
|
|
233
|
+
if (!latestUserEntry) {
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
targetLeafId = typeof latestUserEntry.parentId === 'string' && latestUserEntry.parentId
|
|
237
|
+
? latestUserEntry.parentId
|
|
238
|
+
: null;
|
|
239
|
+
moveSessionManagerLeaf(sessionManager, targetLeafId);
|
|
240
|
+
}
|
|
241
|
+
return { rewound, targetLeafId };
|
|
242
|
+
}
|
|
243
|
+
function resolveSessionManagerLeafId(sessionManager) {
|
|
244
|
+
return typeof sessionManager?.getLeafId === 'function'
|
|
245
|
+
? sessionManager.getLeafId()
|
|
246
|
+
: null;
|
|
247
|
+
}
|
|
248
|
+
function getActiveSessionBranch(sessionManager) {
|
|
249
|
+
const hasLeafApi = typeof sessionManager?.getLeafId === 'function';
|
|
250
|
+
const leafId = hasLeafApi ? sessionManager.getLeafId() : undefined;
|
|
251
|
+
if (hasLeafApi && leafId === null) {
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
if (typeof sessionManager?.getBranch === 'function') {
|
|
255
|
+
const branch = hasLeafApi ? sessionManager.getBranch(leafId) : sessionManager.getBranch();
|
|
256
|
+
return Array.isArray(branch) ? branch : [];
|
|
257
|
+
}
|
|
258
|
+
const entries = typeof sessionManager?.getEntries === 'function' ? sessionManager.getEntries() : [];
|
|
259
|
+
return Array.isArray(entries) ? entries : [];
|
|
260
|
+
}
|
|
261
|
+
function findLatestUserMessageEntry(branch) {
|
|
262
|
+
for (let index = branch.length - 1; index >= 0; index -= 1) {
|
|
263
|
+
const entry = branch[index];
|
|
264
|
+
if (entry?.type === 'message' && entry.message?.role === 'user') {
|
|
265
|
+
return entry;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
function moveSessionManagerLeaf(sessionManager, leafId) {
|
|
271
|
+
if (leafId) {
|
|
272
|
+
sessionManager.branch?.(leafId);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
sessionManager.resetLeaf?.();
|
|
276
|
+
}
|
|
277
|
+
function captureLinxRewindSessionState(sessionManager) {
|
|
278
|
+
return {
|
|
279
|
+
id: normalizeRewindString(sessionManager?.getSessionId?.()),
|
|
280
|
+
file: normalizeRewindString(sessionManager?.getSessionFile?.()),
|
|
281
|
+
createdAt: resolveRewindSessionCreatedAt(sessionManager),
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function materializeCleanRewindSession(sessionManager, targetLeafId, previousState) {
|
|
285
|
+
const beforeId = previousState.id;
|
|
286
|
+
let materialized = false;
|
|
287
|
+
let warning;
|
|
288
|
+
try {
|
|
289
|
+
if (targetLeafId && typeof sessionManager?.createBranchedSession === 'function') {
|
|
290
|
+
sessionManager.createBranchedSession(targetLeafId);
|
|
291
|
+
materialized = true;
|
|
292
|
+
}
|
|
293
|
+
else if (!targetLeafId && typeof sessionManager?.newSession === 'function') {
|
|
294
|
+
sessionManager.newSession(previousState.file ? { parentSession: previousState.file } : undefined);
|
|
295
|
+
materialized = true;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
warning = error instanceof Error ? error.message : String(error);
|
|
300
|
+
}
|
|
301
|
+
const id = normalizeRewindString(sessionManager?.getSessionId?.());
|
|
302
|
+
const file = normalizeRewindString(sessionManager?.getSessionFile?.());
|
|
303
|
+
return {
|
|
304
|
+
materialized,
|
|
305
|
+
sessionChanged: Boolean(beforeId && id && beforeId !== id),
|
|
306
|
+
id,
|
|
307
|
+
file,
|
|
308
|
+
...(warning ? { warning } : {}),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function collectAbandonedRewindEntries(previousBranch, targetLeafId) {
|
|
312
|
+
if (!Array.isArray(previousBranch) || previousBranch.length === 0) {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
if (!targetLeafId) {
|
|
316
|
+
return previousBranch;
|
|
317
|
+
}
|
|
318
|
+
const targetIndex = previousBranch.findIndex((entry) => entry?.id === targetLeafId);
|
|
319
|
+
return targetIndex >= 0 ? previousBranch.slice(targetIndex + 1) : previousBranch;
|
|
320
|
+
}
|
|
321
|
+
function resolveRewindSessionCreatedAt(sessionManager) {
|
|
322
|
+
const headerTimestamp = normalizeRewindString(sessionManager?.getHeader?.()?.timestamp);
|
|
323
|
+
const headerDate = toValidRewindDate(headerTimestamp);
|
|
324
|
+
if (headerDate) {
|
|
325
|
+
return headerDate;
|
|
326
|
+
}
|
|
327
|
+
const entries = Array.isArray(sessionManager?.getEntries?.()) ? sessionManager.getEntries() : [];
|
|
328
|
+
for (const entry of entries) {
|
|
329
|
+
const timestamp = normalizeRewindString(entry?.timestamp);
|
|
330
|
+
const date = toValidRewindDate(timestamp);
|
|
331
|
+
if (date) {
|
|
332
|
+
return date;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const sessionId = normalizeRewindString(sessionManager?.getSessionId?.());
|
|
336
|
+
return sessionId ? parseRewindDateFromSessionId(sessionId) ?? undefined : undefined;
|
|
337
|
+
}
|
|
338
|
+
function parseRewindDateFromSessionId(sessionId) {
|
|
339
|
+
const prefix = sessionId.replace(/-/g, '').slice(0, 12);
|
|
340
|
+
if (!/^[\da-f]{12}$/i.test(prefix)) {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
const millis = Number.parseInt(prefix, 16);
|
|
344
|
+
if (!Number.isFinite(millis) || millis <= 0) {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
return toValidRewindDate(millis);
|
|
348
|
+
}
|
|
349
|
+
function toValidRewindDate(value) {
|
|
350
|
+
if (value instanceof Date) {
|
|
351
|
+
return Number.isNaN(value.getTime()) ? null : value;
|
|
352
|
+
}
|
|
353
|
+
if (typeof value === 'number' || typeof value === 'string') {
|
|
354
|
+
const date = new Date(value);
|
|
355
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
356
|
+
}
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
function normalizeRewindString(value) {
|
|
360
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
361
|
+
}
|
|
362
|
+
function syncAgentStateFromSessionManager(session, sessionManager) {
|
|
363
|
+
const context = sessionManager.buildSessionContext?.();
|
|
364
|
+
if (!context || !session?.agent?.state) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (Array.isArray(context.messages)) {
|
|
368
|
+
session.agent.state.messages = context.messages;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
function countActiveAgentMessages(session) {
|
|
372
|
+
return Array.isArray(session?.agent?.state?.messages)
|
|
373
|
+
? session.agent.state.messages.length
|
|
374
|
+
: undefined;
|
|
375
|
+
}
|
|
376
|
+
function extractRewindMessageText(content) {
|
|
377
|
+
if (typeof content === 'string') {
|
|
378
|
+
return content;
|
|
379
|
+
}
|
|
380
|
+
if (!Array.isArray(content)) {
|
|
381
|
+
return '';
|
|
382
|
+
}
|
|
383
|
+
return content
|
|
384
|
+
.filter((part) => typeof part === 'object' && part !== null && part.type === 'text')
|
|
385
|
+
.map((part) => typeof part.text === 'string' ? part.text : '')
|
|
386
|
+
.join('');
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=linx-session-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-session-history.js","sourceRoot":"","sources":["../../src/lib/linx-session-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, statSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { basename, join, resolve } from 'node:path';
|
|
3
3
|
import { CURRENT_SESSION_VERSION, SessionManager, } from '@earendil-works/pi-coding-agent';
|
|
4
|
-
import { filterRuntimeSessionsForWorkspace } from '
|
|
4
|
+
import { filterRuntimeSessionsForWorkspace } from '../../vendor/agent-runtime/dist/workspace.js';
|
|
5
5
|
import { resolvePodBaseUrl } from '@undefineds.co/drizzle-solid';
|
|
6
|
-
import { getDefaultPodDataSession, } from '
|
|
7
|
-
import { chatResource, drizzle, eq, extractSessionIdFromSessionRef, messageResource, sessionResource, solidResources, } from '
|
|
6
|
+
import { getDefaultPodDataSession, } from './pod-data-session.js';
|
|
7
|
+
import { chatResource, drizzle, eq, extractSessionIdFromSessionRef, messageResource, sessionResource, solidResources, } from './models.js';
|
|
8
8
|
import { PI_CHAT_ID } from './pod-mirror-mapping.js';
|
|
9
|
-
export function
|
|
9
|
+
export function createNativeLinxPodSessionSource(context) {
|
|
10
10
|
const source = {
|
|
11
11
|
async listSessions(_cwd) {
|
|
12
12
|
return listPodSessionSnapshots(context);
|
|
@@ -26,46 +26,46 @@ export function createNativeLinxPiPodSessionSource(context) {
|
|
|
26
26
|
};
|
|
27
27
|
return source;
|
|
28
28
|
}
|
|
29
|
-
export async function
|
|
30
|
-
|
|
29
|
+
export async function createLinxRuntimeSessionManager(options) {
|
|
30
|
+
assertLinxRuntimeSessionSelectorCompatibility(options);
|
|
31
|
+
const sessionDir = resolveLinxRuntimeSessionDir(options.cwd, options.agentDir, options.sessionDir);
|
|
32
|
+
const sessionId = normalizeLinxRuntimeSessionId(options.sessionId);
|
|
31
33
|
if (options.session?.trim()) {
|
|
32
|
-
const session = await
|
|
34
|
+
const session = await resolveLinxRuntimeSession(options.session.trim(), options.cwd, sessionDir, {
|
|
33
35
|
podSessionSource: options.podSessionSource,
|
|
34
36
|
});
|
|
35
|
-
return
|
|
37
|
+
return openAndRepairLinxRuntimeSession(session.path, sessionDir);
|
|
36
38
|
}
|
|
37
39
|
if (options.last) {
|
|
38
|
-
const sessions = await
|
|
40
|
+
const sessions = await listLinxRuntimeSessions(options.cwd, options.agentDir, {
|
|
41
|
+
sessionDir,
|
|
39
42
|
podSessionSource: options.podSessionSource,
|
|
40
43
|
});
|
|
41
44
|
if (sessions[0]) {
|
|
42
|
-
return
|
|
45
|
+
return openAndRepairLinxRuntimeSession(sessions[0].path, sessionDir);
|
|
43
46
|
}
|
|
44
|
-
return SessionManager.create(options.cwd, sessionDir);
|
|
47
|
+
return SessionManager.create(options.cwd, sessionDir, sessionId ? { id: sessionId } : undefined);
|
|
45
48
|
}
|
|
46
|
-
|
|
49
|
+
if (sessionId) {
|
|
50
|
+
const existing = await findExactLinxRuntimeSessionById(sessionId, options.cwd, sessionDir);
|
|
51
|
+
if (existing) {
|
|
52
|
+
return openAndRepairLinxRuntimeSession(existing.path, sessionDir);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return SessionManager.create(options.cwd, sessionDir, sessionId ? { id: sessionId } : undefined);
|
|
47
56
|
}
|
|
48
|
-
export async function
|
|
49
|
-
const sessionDir =
|
|
57
|
+
export async function listLinxRuntimeSessions(cwd, agentDir, options = {}) {
|
|
58
|
+
const sessionDir = resolveLinxRuntimeSessionDir(cwd, agentDir, options.sessionDir);
|
|
50
59
|
const localSessions = filterRuntimeSessionsForWorkspace(await SessionManager.list(cwd, sessionDir), cwd, { normalizeLocalPath: (value) => value?.trim() ? resolve(value) : '' });
|
|
51
60
|
const podSessions = await hydratePodSessions(cwd, sessionDir, options.podSessionSource, localSessions);
|
|
52
61
|
return sortSessionsByModified(mergeSessions(localSessions, podSessions));
|
|
53
62
|
}
|
|
54
|
-
export async function
|
|
63
|
+
export async function resolveLinxRuntimeSession(input, cwd, sessionDir, options = {}) {
|
|
55
64
|
const directPath = resolve(input);
|
|
56
65
|
if (existsSync(directPath) && statSync(directPath).isFile()) {
|
|
57
66
|
const manager = SessionManager.open(directPath);
|
|
58
67
|
const header = manager.getHeader();
|
|
59
|
-
return {
|
|
60
|
-
path: directPath,
|
|
61
|
-
id: manager.getSessionId(),
|
|
62
|
-
cwd: manager.getCwd(),
|
|
63
|
-
created: header?.timestamp ? new Date(header.timestamp) : new Date(0),
|
|
64
|
-
modified: statSync(directPath).mtime,
|
|
65
|
-
messageCount: manager.getEntries().filter((entry) => entry.type === 'message').length,
|
|
66
|
-
firstMessage: '(session file)',
|
|
67
|
-
allMessagesText: '',
|
|
68
|
-
};
|
|
68
|
+
return buildSessionInfoFromArchiveSnapshot(getRuntimeSessionArchiveSnapshot(manager), directPath, header?.timestamp ? new Date(header.timestamp) : new Date(0), statSync(directPath).mtime, { firstMessage: '(session file)', allMessagesText: '' });
|
|
69
69
|
}
|
|
70
70
|
const localSessions = sessionDir
|
|
71
71
|
? await SessionManager.list(cwd, sessionDir)
|
|
@@ -98,13 +98,13 @@ export async function resolveLinxPiSession(input, cwd, sessionDir, options = {})
|
|
|
98
98
|
if (byPrefix.length > 1 || byFilePrefix.length > 1) {
|
|
99
99
|
const matches = sortSessionsByModified([...new Map([...byPrefix, ...byFilePrefix].map((session) => [session.path, session])).values()])
|
|
100
100
|
.slice(0, 8)
|
|
101
|
-
.map((session) => `- ${
|
|
101
|
+
.map((session) => `- ${formatLinxRuntimeSessionSummary(session)}`)
|
|
102
102
|
.join('\n');
|
|
103
103
|
throw new Error(`Session id is ambiguous: ${input}\n${matches}`);
|
|
104
104
|
}
|
|
105
105
|
throw new Error(`No LinX session found for: ${input}`);
|
|
106
106
|
}
|
|
107
|
-
export function
|
|
107
|
+
export function formatLinxRuntimeSessionSummary(session) {
|
|
108
108
|
const label = session.name || session.firstMessage || '(no messages)';
|
|
109
109
|
const cwd = session.cwd || '(unknown cwd)';
|
|
110
110
|
return `${session.id.slice(0, 13)} ${label} ${cwd}`;
|
|
@@ -122,10 +122,48 @@ function mergeSessions(localSessions, podSessions) {
|
|
|
122
122
|
}
|
|
123
123
|
return [...merged.values()];
|
|
124
124
|
}
|
|
125
|
-
function
|
|
125
|
+
export function assertLinxRuntimeSessionSelectorCompatibility(options) {
|
|
126
|
+
if (!options.sessionId?.trim()) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (options.session?.trim()) {
|
|
130
|
+
throw new Error('--session-id cannot be combined with --session');
|
|
131
|
+
}
|
|
132
|
+
if (options.last) {
|
|
133
|
+
throw new Error('--session-id cannot be combined with --continue or --resume');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function resolveLinxRuntimeSessionDir(_cwd, agentDir, sessionDir) {
|
|
126
137
|
// Sessions are stored flat, not bound to workspace directory.
|
|
127
138
|
// Workspace (cwd) is tracked as session metadata, so `cd` doesn't break the session.
|
|
128
|
-
return join(agentDir, 'sessions');
|
|
139
|
+
return sessionDir?.trim() ? resolve(expandHomePath(sessionDir.trim())) : join(agentDir, 'sessions');
|
|
140
|
+
}
|
|
141
|
+
async function findExactLinxRuntimeSessionById(sessionId, cwd, sessionDir) {
|
|
142
|
+
const sessions = await SessionManager.list(cwd, sessionDir);
|
|
143
|
+
return sessions.find((session) => session.id === sessionId) ?? null;
|
|
144
|
+
}
|
|
145
|
+
function normalizeLinxRuntimeSessionId(sessionId) {
|
|
146
|
+
const normalized = sessionId?.trim();
|
|
147
|
+
if (!normalized) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
if (!/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/.test(normalized)) {
|
|
151
|
+
throw new Error([
|
|
152
|
+
'Session id must be non-empty, contain only alphanumeric characters,',
|
|
153
|
+
"'-', '_', and '.', and start and end with an alphanumeric character",
|
|
154
|
+
].join(' '));
|
|
155
|
+
}
|
|
156
|
+
return normalized;
|
|
157
|
+
}
|
|
158
|
+
function expandHomePath(path) {
|
|
159
|
+
if (path === '~') {
|
|
160
|
+
return process.env.HOME ?? path;
|
|
161
|
+
}
|
|
162
|
+
if (path.startsWith('~/')) {
|
|
163
|
+
const home = process.env.HOME;
|
|
164
|
+
return home ? join(home, path.slice(2)) : path;
|
|
165
|
+
}
|
|
166
|
+
return path;
|
|
129
167
|
}
|
|
130
168
|
async function hydratePodSessions(cwd, sessionDir, source, localSessions) {
|
|
131
169
|
const resolvedSource = await resolvePodSessionSource(source);
|
|
@@ -158,7 +196,7 @@ async function resolvePodSessionSource(source) {
|
|
|
158
196
|
if (source !== undefined) {
|
|
159
197
|
return source;
|
|
160
198
|
}
|
|
161
|
-
return
|
|
199
|
+
return createDefaultLinxPodSessionSource();
|
|
162
200
|
}
|
|
163
201
|
function materializePodSessionSnapshot(snapshot, fallbackCwd, sessionDir) {
|
|
164
202
|
mkdirSync(sessionDir, { recursive: true });
|
|
@@ -176,16 +214,16 @@ function materializePodSessionSnapshot(snapshot, fallbackCwd, sessionDir) {
|
|
|
176
214
|
};
|
|
177
215
|
const lines = [header, ...entries].map((entry) => JSON.stringify(entry));
|
|
178
216
|
writeFileSync(sessionFile, `${lines.join('\n')}\n`);
|
|
179
|
-
const manager =
|
|
217
|
+
const manager = openAndRepairLinxRuntimeSession(sessionFile, sessionDir);
|
|
180
218
|
const info = buildSessionInfoFromManager(manager, sessionFile, created, modified);
|
|
181
219
|
return snapshot.name ? { ...info, name: snapshot.name } : info;
|
|
182
220
|
}
|
|
183
|
-
function
|
|
221
|
+
function openAndRepairLinxRuntimeSession(path, sessionDir) {
|
|
184
222
|
const manager = SessionManager.open(path, sessionDir);
|
|
185
|
-
|
|
223
|
+
repairDanglingLinxRuntimeToolCalls(manager);
|
|
186
224
|
return manager;
|
|
187
225
|
}
|
|
188
|
-
export function
|
|
226
|
+
export function repairDanglingLinxRuntimeToolCalls(manager) {
|
|
189
227
|
let repaired = 0;
|
|
190
228
|
const maxRepairs = 10;
|
|
191
229
|
for (let index = 0; index < maxRepairs; index += 1) {
|
|
@@ -429,8 +467,18 @@ function getMaterializedSessionFile(snapshot, sessionDir, created) {
|
|
|
429
467
|
return join(sessionDir, `${fileTimestamp}_${snapshot.id}.jsonl`);
|
|
430
468
|
}
|
|
431
469
|
function buildSessionInfoFromManager(manager, path, created, modified) {
|
|
432
|
-
|
|
433
|
-
|
|
470
|
+
return buildSessionInfoFromArchiveSnapshot(getRuntimeSessionArchiveSnapshot(manager), path, created, modified);
|
|
471
|
+
}
|
|
472
|
+
function getRuntimeSessionArchiveSnapshot(manager) {
|
|
473
|
+
return {
|
|
474
|
+
id: manager.getSessionId(),
|
|
475
|
+
cwd: manager.getCwd(),
|
|
476
|
+
name: manager.getSessionName(),
|
|
477
|
+
entries: manager.getEntries(),
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
function buildSessionInfoFromArchiveSnapshot(snapshot, path, created, modified, overrides = {}) {
|
|
481
|
+
const messages = snapshot.entries.filter((entry) => entry.type === 'message');
|
|
434
482
|
const allMessages = messages
|
|
435
483
|
.map((entry) => extractMessageText(entry.message))
|
|
436
484
|
.filter(Boolean);
|
|
@@ -440,16 +488,16 @@ function buildSessionInfoFromManager(manager, path, created, modified) {
|
|
|
440
488
|
});
|
|
441
489
|
return {
|
|
442
490
|
path,
|
|
443
|
-
id:
|
|
444
|
-
cwd:
|
|
445
|
-
name:
|
|
491
|
+
id: snapshot.id,
|
|
492
|
+
cwd: snapshot.cwd,
|
|
493
|
+
name: snapshot.name,
|
|
446
494
|
created,
|
|
447
495
|
modified,
|
|
448
496
|
messageCount: messages.length,
|
|
449
|
-
firstMessage: firstUserMessage
|
|
497
|
+
firstMessage: overrides.firstMessage ?? (firstUserMessage
|
|
450
498
|
? extractMessageText(firstUserMessage.message) || '(no messages)'
|
|
451
|
-
: '(no messages)',
|
|
452
|
-
allMessagesText: allMessages.join(' '),
|
|
499
|
+
: '(no messages)'),
|
|
500
|
+
allMessagesText: overrides.allMessagesText ?? allMessages.join(' '),
|
|
453
501
|
};
|
|
454
502
|
}
|
|
455
503
|
function extractMessageText(message) {
|
|
@@ -490,16 +538,16 @@ function toDate(value) {
|
|
|
490
538
|
const POD_SESSION_LIST_LOOKBACK_DAYS = 90;
|
|
491
539
|
const POD_SESSION_LIST_LIMIT = 200;
|
|
492
540
|
const POD_CONTAINER_LIST_TIMEOUT_MS = 8_000;
|
|
493
|
-
async function
|
|
541
|
+
async function createDefaultLinxPodSessionSource() {
|
|
494
542
|
const contextPromise = createDefaultPodSessionContext();
|
|
495
543
|
return {
|
|
496
544
|
async listSessions(cwd) {
|
|
497
545
|
const context = await contextPromise;
|
|
498
|
-
return context ?
|
|
546
|
+
return context ? createNativeLinxPodSessionSource(context).listSessions(cwd) : [];
|
|
499
547
|
},
|
|
500
548
|
async findSession(input, cwd) {
|
|
501
549
|
const context = await contextPromise;
|
|
502
|
-
return context ?
|
|
550
|
+
return context ? createNativeLinxPodSessionSource(context).findSession(input, cwd) : null;
|
|
503
551
|
},
|
|
504
552
|
};
|
|
505
553
|
}
|
|
@@ -857,4 +905,4 @@ function normalizeUnknownDate(value) {
|
|
|
857
905
|
function isRecord(value) {
|
|
858
906
|
return typeof value === 'object' && value !== null;
|
|
859
907
|
}
|
|
860
|
-
//# sourceMappingURL=session.js.map
|
|
908
|
+
//# sourceMappingURL=linx-session-manager.js.map
|