@undefineds.co/linx 0.3.26 → 0.3.27
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 +96 -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 +163 -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 +176 -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 +179 -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,16 @@
|
|
|
1
|
+
import { openLinxInteractiveExternalUrl } from './linx-external-open-host.js';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
export function openExternalUrl(url, interactive) {
|
|
4
|
+
if (openLinxInteractiveExternalUrl(interactive, url)) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const command = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd' : 'xdg-open';
|
|
8
|
+
const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
|
|
9
|
+
const child = spawn(command, args, {
|
|
10
|
+
detached: true,
|
|
11
|
+
stdio: 'ignore',
|
|
12
|
+
shell: false,
|
|
13
|
+
});
|
|
14
|
+
child.unref();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=linx-external-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-external-url.js","sourceRoot":"","sources":["../../src/lib/linx-external-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,WAAgB;IAC3D,IAAI,8BAA8B,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;QACrD,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;IAC1G,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACjC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;IACF,KAAK,CAAC,KAAK,EAAE,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { FooterComponent } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { visibleWidth } from '@earendil-works/pi-tui';
|
|
3
|
+
import { buildLinxFooterStatusLine } from './linx-status-line.js';
|
|
4
|
+
import { isLinxInteractiveAutoModeEnabled, isLinxInteractiveSymphonyModeEnabled, } from './linx-interactive-shell-state.js';
|
|
5
|
+
let footerPatched = false;
|
|
6
|
+
let footerInteractive = null;
|
|
7
|
+
export function setLinxFooterInteractive(interactive) {
|
|
8
|
+
footerInteractive = interactive ?? null;
|
|
9
|
+
}
|
|
10
|
+
export function installLinxFooterPatch() {
|
|
11
|
+
if (footerPatched) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const originalRender = FooterComponent.prototype.render;
|
|
15
|
+
FooterComponent.prototype.render = function patchedRender(width) {
|
|
16
|
+
const lines = originalRender.call(this, width);
|
|
17
|
+
if (Array.isArray(lines) && lines.length > 1 && typeof lines[1] === 'string') {
|
|
18
|
+
const session = this.session;
|
|
19
|
+
const autoCompactEnabled = this.autoCompactEnabled !== false;
|
|
20
|
+
const footerData = this.footerData;
|
|
21
|
+
const modePrefix = buildLinxFooterModePrefix();
|
|
22
|
+
const modeLen = visibleWidth(modePrefix);
|
|
23
|
+
const bulletLen = modeLen > 0 ? 3 : 0;
|
|
24
|
+
const statusWidth = Math.max(0, width - modeLen - bulletLen);
|
|
25
|
+
lines[1] = buildLinxFooterStatusLine({
|
|
26
|
+
session,
|
|
27
|
+
width: statusWidth,
|
|
28
|
+
autoCompactEnabled,
|
|
29
|
+
footerData: footerData,
|
|
30
|
+
});
|
|
31
|
+
if (modePrefix) {
|
|
32
|
+
lines[1] = modePrefix + ' • ' + lines[1];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return lines;
|
|
36
|
+
};
|
|
37
|
+
footerPatched = true;
|
|
38
|
+
}
|
|
39
|
+
export function buildLinxFooterModePrefix() {
|
|
40
|
+
if (!footerInteractive)
|
|
41
|
+
return '';
|
|
42
|
+
const autoOn = isLinxInteractiveAutoModeEnabled(footerInteractive);
|
|
43
|
+
const symphonyOn = isLinxInteractiveSymphonyModeEnabled(footerInteractive);
|
|
44
|
+
if (!autoOn && !symphonyOn)
|
|
45
|
+
return '';
|
|
46
|
+
if (autoOn && symphonyOn)
|
|
47
|
+
return 'Symphony · Auto';
|
|
48
|
+
if (autoOn)
|
|
49
|
+
return 'Auto';
|
|
50
|
+
return 'Symphony';
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=linx-footer-patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-footer-patch.js","sourceRoot":"","sources":["../../src/lib/linx-footer-patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EACL,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,mCAAmC,CAAA;AAE1C,IAAI,aAAa,GAAG,KAAK,CAAA;AACzB,IAAI,iBAAiB,GAAQ,IAAI,CAAA;AAEjC,MAAM,UAAU,wBAAwB,CAAC,WAAgB;IACvD,iBAAiB,GAAG,WAAW,IAAI,IAAI,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAA;IACvD,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,aAAa,CAAC,KAAa;QACrE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7E,MAAM,OAAO,GAAI,IAAyC,CAAC,OAAO,CAAA;YAClE,MAAM,kBAAkB,GAAI,IAAoD,CAAC,kBAAkB,KAAK,KAAK,CAAA;YAC7G,MAAM,UAAU,GAAI,IAA4C,CAAC,UAAU,CAAA;YAC3E,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAA;YAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;YACxC,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;YAC5D,KAAK,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC;gBACnC,OAAO;gBACP,KAAK,EAAE,WAAW;gBAClB,kBAAkB;gBAClB,UAAU,EAAE,UAA2E;aACxF,CAAC,CAAA;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IACD,aAAa,GAAG,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,gCAAgC,CAAC,iBAAiB,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,oCAAoC,CAAC,iBAAiB,CAAC,CAAA;IAC1E,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAA;IACrC,IAAI,MAAM,IAAI,UAAU;QAAE,OAAO,iBAAiB,CAAA;IAClD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { parseLinxShellCommand } from './linx-shell-command-router.js';
|
|
2
|
+
import { setLinxInteractiveEditorText } from './linx-interactive-editor-text-host.js';
|
|
3
|
+
import { isFinalSubmitWrappedHandler, isInputCommandRouterInstalled, markFinalSubmitWrappedHandler, markInputCommandRouterInstalled, } from './linx-interactive-command-routing-host.js';
|
|
4
|
+
import { forEachLinxInteractiveEditorComponent, registerLinxEditorComponentRebindHandler } from './linx-editor-component-router.js';
|
|
5
|
+
export function installLinxInputCommandRouter(interactive, runtime, handleShellCommand) {
|
|
6
|
+
if (!interactive || isInputCommandRouterInstalled(interactive)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const originalGetUserInput = interactive.getUserInput?.bind(interactive);
|
|
10
|
+
if (typeof originalGetUserInput !== 'function') {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
interactive.getUserInput = async function patchedLinxGetUserInput(...args) {
|
|
14
|
+
while (true) {
|
|
15
|
+
const input = await originalGetUserInput(...args);
|
|
16
|
+
if (typeof input !== 'string') {
|
|
17
|
+
return input;
|
|
18
|
+
}
|
|
19
|
+
const command = parseLinxShellCommand(input.trim());
|
|
20
|
+
if (!command) {
|
|
21
|
+
return input;
|
|
22
|
+
}
|
|
23
|
+
setLinxInteractiveEditorText(this, '');
|
|
24
|
+
await handleShellCommand(this, runtime, command);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
markInputCommandRouterInstalled(interactive);
|
|
28
|
+
}
|
|
29
|
+
export function installLinxFinalSubmitCommandRouter(interactive, runtime, handleShellCommand) {
|
|
30
|
+
if (!interactive) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const wrapEditor = (editor) => {
|
|
34
|
+
if (!editor || typeof editor.onSubmit !== 'function') {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (isFinalSubmitWrappedHandler(editor.onSubmit)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const originalSubmit = editor.onSubmit.bind(editor);
|
|
41
|
+
const wrappedSubmit = async (text) => {
|
|
42
|
+
const command = parseLinxShellCommand(String(text ?? '').trim());
|
|
43
|
+
if (!command) {
|
|
44
|
+
await originalSubmit(text);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setLinxInteractiveEditorText(interactive, '');
|
|
48
|
+
await handleShellCommand(interactive, runtime, command);
|
|
49
|
+
};
|
|
50
|
+
markFinalSubmitWrappedHandler(wrappedSubmit);
|
|
51
|
+
editor.onSubmit = wrappedSubmit;
|
|
52
|
+
};
|
|
53
|
+
wrapLinxFinalSubmitEditors(interactive, wrapEditor);
|
|
54
|
+
registerLinxEditorComponentRebindHandler(interactive, {
|
|
55
|
+
name: 'linx-final-submit-command-router:wrap-editor-submit',
|
|
56
|
+
priority: 0,
|
|
57
|
+
handler({ interactive: reboundInteractive }) {
|
|
58
|
+
wrapLinxFinalSubmitEditors(reboundInteractive, wrapEditor);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function wrapLinxFinalSubmitEditors(interactive, wrapEditor) {
|
|
63
|
+
forEachLinxInteractiveEditorComponent(interactive, wrapEditor);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=linx-input-command-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-input-command-routing.js","sourceRoot":"","sources":["../../src/lib/linx-input-command-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const LINX_AUTH_LOGIN_IN_PROGRESS = Symbol.for('linx.tui.authLoginInProgress');
|
|
2
|
+
const LINX_AUTH_LOGIN_ON_INIT = Symbol.for('linx.tui.authLoginOnInit');
|
|
3
|
+
const LINX_AUTH_PENDING_RETRY = Symbol.for('linx.tui.authPendingRetry');
|
|
4
|
+
const LINX_AUTH_LOGIN_SCHEDULED = Symbol.for('linx.tui.authLoginScheduled');
|
|
5
|
+
const LINX_AUTH_REPORTING_ERROR = Symbol.for('linx.tui.authReportingError');
|
|
6
|
+
export function getLinxInteractiveAuthState(interactive) {
|
|
7
|
+
const target = isAuthStateTarget(interactive) ? interactive : undefined;
|
|
8
|
+
return {
|
|
9
|
+
get loginInProgress() {
|
|
10
|
+
return Boolean(target?.[LINX_AUTH_LOGIN_IN_PROGRESS]);
|
|
11
|
+
},
|
|
12
|
+
set loginInProgress(value) {
|
|
13
|
+
setAuthStateValue(target, LINX_AUTH_LOGIN_IN_PROGRESS, value);
|
|
14
|
+
},
|
|
15
|
+
get loginOnInit() {
|
|
16
|
+
return target?.[LINX_AUTH_LOGIN_ON_INIT];
|
|
17
|
+
},
|
|
18
|
+
set loginOnInit(value) {
|
|
19
|
+
setAuthStateValue(target, LINX_AUTH_LOGIN_ON_INIT, value);
|
|
20
|
+
},
|
|
21
|
+
get pendingRetry() {
|
|
22
|
+
return target?.[LINX_AUTH_PENDING_RETRY];
|
|
23
|
+
},
|
|
24
|
+
set pendingRetry(value) {
|
|
25
|
+
setAuthStateValue(target, LINX_AUTH_PENDING_RETRY, value);
|
|
26
|
+
},
|
|
27
|
+
get loginScheduled() {
|
|
28
|
+
return Boolean(target?.[LINX_AUTH_LOGIN_SCHEDULED]);
|
|
29
|
+
},
|
|
30
|
+
set loginScheduled(value) {
|
|
31
|
+
setAuthStateValue(target, LINX_AUTH_LOGIN_SCHEDULED, value);
|
|
32
|
+
},
|
|
33
|
+
get reportingError() {
|
|
34
|
+
return Boolean(target?.[LINX_AUTH_REPORTING_ERROR]);
|
|
35
|
+
},
|
|
36
|
+
set reportingError(value) {
|
|
37
|
+
setAuthStateValue(target, LINX_AUTH_REPORTING_ERROR, value);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function isAuthStateTarget(value) {
|
|
42
|
+
return Boolean(value && (typeof value === 'object' || typeof value === 'function'));
|
|
43
|
+
}
|
|
44
|
+
function setAuthStateValue(target, key, value) {
|
|
45
|
+
if (!target) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
target[key] = value;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=linx-interactive-auth-state-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-auth-state-host.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-auth-state-host.ts"],"names":[],"mappings":"AAQA,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;AAC9E,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;AACtE,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;AACvE,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAC3E,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAI3E,MAAM,UAAU,2BAA2B,CACzC,WAAgB;IAEhB,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvE,OAAO;QACL,IAAI,eAAe;YACjB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,eAAe,CAAC,KAAc;YAChC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,WAAW;YACb,OAAO,MAAM,EAAE,CAAC,uBAAuB,CAAoC,CAAA;QAC7E,CAAC;QACD,IAAI,WAAW,CAAC,KAAsC;YACpD,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,YAAY;YACd,OAAO,MAAM,EAAE,CAAC,uBAAuB,CAA6B,CAAA;QACtE,CAAC;QACD,IAAI,YAAY,CAAC,KAA+B;YAC9C,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,cAAc;YAChB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,IAAI,cAAc,CAAC,KAAc;YAC/B,iBAAiB,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,cAAc;YAChB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,IAAI,cAAc,CAAC,KAAc;YAC/B,iBAAiB,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAA;QAC7D,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmC,EAAE,GAAW,EAAE,KAAc;IACzF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAM;IACR,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const linxInteractiveAutocompleteInstalled = new WeakSet();
|
|
2
|
+
export function installLinxInteractiveAutocompleteCommands(target, commands, getCommandName) {
|
|
3
|
+
if (!target || typeof target !== 'object' || linxInteractiveAutocompleteInstalled.has(target)) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
const interactive = target;
|
|
7
|
+
const setupName = typeof interactive.setupAutocompleteProvider === 'function'
|
|
8
|
+
? 'setupAutocompleteProvider'
|
|
9
|
+
: 'setupAutocomplete';
|
|
10
|
+
const originalSetup = interactive[setupName]?.bind(interactive);
|
|
11
|
+
if (typeof originalSetup !== 'function') {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
interactive[setupName] = function patchedLinxSetupAutocompleteProvider(...args) {
|
|
15
|
+
const result = originalSetup(...args);
|
|
16
|
+
installAutocompleteCommands(this.autocompleteProvider, commands, getCommandName);
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
linxInteractiveAutocompleteInstalled.add(target);
|
|
20
|
+
}
|
|
21
|
+
function installAutocompleteCommands(provider, commands, getCommandName) {
|
|
22
|
+
if (!Array.isArray(provider?.commands)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
for (const command of commands) {
|
|
26
|
+
const name = getCommandName(command);
|
|
27
|
+
if (!provider.commands.some((existing) => getCommandName(existing) === name)) {
|
|
28
|
+
provider.commands.push(command);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=linx-interactive-autocomplete-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-autocomplete-host.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-autocomplete-host.ts"],"names":[],"mappings":"AAUA,MAAM,oCAAoC,GAAG,IAAI,OAAO,EAAU,CAAA;AAElE,MAAM,UAAU,0CAA0C,CACxD,MAAe,EACf,QAA4B,EAC5B,cAAwD;IAExD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,oCAAoC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9F,OAAM;IACR,CAAC;IAED,MAAM,WAAW,GAAG,MAA2C,CAAA;IAC/D,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,yBAAyB,KAAK,UAAU;QAC3E,CAAC,CAAC,2BAA2B;QAC7B,CAAC,CAAC,mBAAmB,CAAA;IACvB,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IAC/D,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,OAAM;IACR,CAAC;IAED,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,oCAAoC,CAA0C,GAAG,IAAe;QAChI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,CAAA;QACrC,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;QAChF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,oCAAoC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAyD,EACzD,QAA4B,EAC5B,cAAwD;IAExD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAM;IACR,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7E,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { InteractiveMode } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { applyLinxInteractiveBranding, requestLinxCloudLogin } from './linx-interactive-branding.js';
|
|
3
|
+
import { installPodStatusOutputFilter } from './pod-status-output.js';
|
|
4
|
+
import { getSessionControlManager } from './session-control.js';
|
|
5
|
+
import { buildLinxExitMessage, installLinxExitMessage, installLinxResumeOutputStyle, withLinxResumeOutputStyle, } from './linx-resume-output.js';
|
|
6
|
+
import { installInteractiveStopCleanup, stopInteractiveShellUnlessRestarting } from './shell-lifecycle.js';
|
|
7
|
+
import { installLinxFooterPatch, setLinxFooterInteractive } from './linx-footer-patch.js';
|
|
8
|
+
import { patchPiAssistantMessageRendering } from './linx-assistant-message-rendering.js';
|
|
9
|
+
import { promptForBackendCredential } from './linx-ai-connect-command.js';
|
|
10
|
+
import { installLinxInteractiveCommandSurface } from './linx-interactive-command-surface.js';
|
|
11
|
+
import { installLinxInteractivePostInitHooks } from './linx-interactive-post-init.js';
|
|
12
|
+
import { ensureInteractiveRuntimeHost, setLinxInteractiveRuntime } from './linx-interactive-runtime-host.js';
|
|
13
|
+
import { installPodBackedExtensionUi } from './linx-pod-backed-extension-ui.js';
|
|
14
|
+
import { configureLinxInteractiveShellState } from './linx-interactive-shell-state.js';
|
|
15
|
+
export { buildLinxExitMessage, installLinxResumeOutputStyle, withLinxResumeOutputStyle };
|
|
16
|
+
export function bootstrapLinxInteractiveMode(runtime, options = {}) {
|
|
17
|
+
installLinxResumeOutputStyle();
|
|
18
|
+
installLinxFooterPatch();
|
|
19
|
+
patchPiAssistantMessageRendering();
|
|
20
|
+
const sessionCwd = runtime?.cwd || process.cwd();
|
|
21
|
+
ensureInteractiveRuntimeHost(runtime);
|
|
22
|
+
const interactive = new InteractiveMode(runtime, options);
|
|
23
|
+
setLinxInteractiveRuntime(interactive, runtime);
|
|
24
|
+
configureLinxInteractiveShellState(interactive, {
|
|
25
|
+
autoModeEnabled: runtime?.autoEnabled === true,
|
|
26
|
+
symphonyModeEnabled: runtime?.symphonyEnabled === true,
|
|
27
|
+
...(options.onSymphonyControlChange ? { symphonyControlChange: options.onSymphonyControlChange } : {}),
|
|
28
|
+
});
|
|
29
|
+
setLinxFooterInteractive(interactive);
|
|
30
|
+
const sessionControlManager = getSessionControlManager(interactive, runtime, sessionCwd);
|
|
31
|
+
const restorePodStatusOutputFilter = installPodStatusOutputFilter();
|
|
32
|
+
applyLinxInteractiveBranding(interactive);
|
|
33
|
+
installLinxExitMessage(interactive);
|
|
34
|
+
installInteractiveStopCleanup(interactive, restorePodStatusOutputFilter);
|
|
35
|
+
installPodBackedExtensionUi(interactive, runtime, sessionControlManager);
|
|
36
|
+
installLinxInteractiveCommandSurface(interactive, runtime, {
|
|
37
|
+
sessionCwd,
|
|
38
|
+
sessionControlManager,
|
|
39
|
+
shellCommandOptions: options,
|
|
40
|
+
});
|
|
41
|
+
installLinxInteractivePostInitHooks(interactive, runtime, sessionCwd, {
|
|
42
|
+
restoredAuto: options.restoredAuto === true,
|
|
43
|
+
sessionControlManager,
|
|
44
|
+
});
|
|
45
|
+
const bootstrap = {
|
|
46
|
+
async init() {
|
|
47
|
+
await interactive.init();
|
|
48
|
+
},
|
|
49
|
+
async run() {
|
|
50
|
+
await bootstrap.init();
|
|
51
|
+
await withLinxResumeOutputStyle(() => interactive.run());
|
|
52
|
+
},
|
|
53
|
+
requestLogin(reason = 'manual') {
|
|
54
|
+
requestLinxCloudLogin(interactive, reason);
|
|
55
|
+
},
|
|
56
|
+
async requestBackendCredential(details) {
|
|
57
|
+
return promptForBackendCredential(interactive, details);
|
|
58
|
+
},
|
|
59
|
+
__unsafeInteractiveForTests: interactive,
|
|
60
|
+
stop() {
|
|
61
|
+
stopInteractiveShellUnlessRestarting(interactive);
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
return bootstrap;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=linx-interactive-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-bootstrap.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getSolidLinxAgentDir } from './solid-local-store.js';
|
|
2
|
+
import { installLinxUpdateNotification, replayDeferredLinxUpdateNotification } from './linx-update-notification.js';
|
|
3
|
+
import { installLinxLoginFlow, requestLinxCloudLogin as requestInstalledLinxCloudLogin, shouldDeferLinxCloudLogin, } from './linx-login-flow.js';
|
|
4
|
+
import { resolveLinxInteractiveRuntimeProviderLabel } from './linx-interactive-runtime-host.js';
|
|
5
|
+
import { installLinxWelcomeHeader } from './linx-welcome-header.js';
|
|
6
|
+
export const LINX_AGENT_DIR = getSolidLinxAgentDir();
|
|
7
|
+
export function applyLinxInteractiveBranding(interactive, options = {}) {
|
|
8
|
+
installLinxWelcomeHeader(interactive);
|
|
9
|
+
installLinxUpdateNotification(interactive, { shouldDefer: () => shouldDeferLinxCloudLogin(interactive) });
|
|
10
|
+
installLinxLoginFlow(interactive, buildLinxLoginFlowOptions(interactive, options));
|
|
11
|
+
}
|
|
12
|
+
export function requestLinxCloudLogin(interactive, reason = 'manual') {
|
|
13
|
+
requestInstalledLinxCloudLogin(interactive, reason, buildLinxLoginFlowOptions(interactive));
|
|
14
|
+
}
|
|
15
|
+
function buildLinxLoginFlowOptions(interactive, options = {}) {
|
|
16
|
+
return {
|
|
17
|
+
...options,
|
|
18
|
+
resolveProviderLabel: resolveLinxInteractiveRuntimeProviderLabel,
|
|
19
|
+
onLoginSettled: () => replayDeferredLinxUpdateNotification(interactive, {
|
|
20
|
+
shouldDefer: () => shouldDeferLinxCloudLogin(interactive),
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=linx-interactive-branding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-branding.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-branding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAA;AACnH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,IAAI,8BAA8B,EACvD,yBAAyB,GAE1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAA;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAA;AAEpD,MAAM,UAAU,4BAA4B,CAC1C,WAAgB,EAChB,UAAyC,EAAE;IAE3C,wBAAwB,CAAC,WAAW,CAAC,CAAA;IACrC,6BAA6B,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACzG,oBAAoB,CAAC,WAAW,EAAE,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAgB,EAAE,SAA2C,QAAQ;IACzG,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAgB,EAChB,UAAyC,EAAE;IAE3C,OAAO;QACL,GAAG,OAAO;QACV,oBAAoB,EAAE,0CAA0C;QAChE,cAAc,EAAE,GAAG,EAAE,CAAC,oCAAoC,CAAC,WAAW,EAAE;YACtE,WAAW,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC;SAC1D,CAAC;KACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Text } from '@earendil-works/pi-tui';
|
|
2
|
+
export function appendLinxInteractiveChatText(interactive, text) {
|
|
3
|
+
interactive.chatContainer?.addChild?.(new Text(text, 1, 0));
|
|
4
|
+
interactive.ui?.requestRender?.();
|
|
5
|
+
}
|
|
6
|
+
export function refreshLinxInteractiveChatTranscript(interactive) {
|
|
7
|
+
if (typeof interactive?.rebuildChatFromMessages === 'function') {
|
|
8
|
+
interactive.rebuildChatFromMessages();
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (typeof interactive?.renderInitialMessages === 'function') {
|
|
12
|
+
interactive.chatContainer?.clear?.();
|
|
13
|
+
interactive.renderInitialMessages();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=linx-interactive-chat-text-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-chat-text-host.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-chat-text-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,MAAM,UAAU,6BAA6B,CAAC,WAAgB,EAAE,IAAY;IAC1E,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3D,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,WAAgB;IACnE,IAAI,OAAO,WAAW,EAAE,uBAAuB,KAAK,UAAU,EAAE,CAAC;QAC/D,WAAW,CAAC,uBAAuB,EAAE,CAAA;QACrC,OAAM;IACR,CAAC;IAED,IAAI,OAAO,WAAW,EAAE,qBAAqB,KAAK,UAAU,EAAE,CAAC;QAC7D,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAA;QACpC,WAAW,CAAC,qBAAqB,EAAE,CAAA;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const globalCommandHandlerInstalled = new WeakSet();
|
|
2
|
+
const inputCommandRouterInstalled = new WeakSet();
|
|
3
|
+
const finalSubmitWrappedHandlers = new WeakSet();
|
|
4
|
+
const sessionCommandRouterAfterRebindInstalled = new WeakSet();
|
|
5
|
+
export function isGlobalCommandHandlerInstalled(interactive) {
|
|
6
|
+
return Boolean(interactive && typeof interactive === 'object' && globalCommandHandlerInstalled.has(interactive));
|
|
7
|
+
}
|
|
8
|
+
export function markGlobalCommandHandlerInstalled(interactive) {
|
|
9
|
+
globalCommandHandlerInstalled.add(interactive);
|
|
10
|
+
}
|
|
11
|
+
export function isInputCommandRouterInstalled(interactive) {
|
|
12
|
+
return Boolean(interactive && typeof interactive === 'object' && inputCommandRouterInstalled.has(interactive));
|
|
13
|
+
}
|
|
14
|
+
export function markInputCommandRouterInstalled(interactive) {
|
|
15
|
+
inputCommandRouterInstalled.add(interactive);
|
|
16
|
+
}
|
|
17
|
+
export function isFinalSubmitWrappedHandler(handler) {
|
|
18
|
+
return Boolean(handler && typeof handler === 'function' && finalSubmitWrappedHandlers.has(handler));
|
|
19
|
+
}
|
|
20
|
+
export function markFinalSubmitWrappedHandler(handler) {
|
|
21
|
+
finalSubmitWrappedHandlers.add(handler);
|
|
22
|
+
}
|
|
23
|
+
export function isSessionCommandRouterAfterRebindInstalled(interactive) {
|
|
24
|
+
return Boolean(interactive
|
|
25
|
+
&& typeof interactive === 'object'
|
|
26
|
+
&& sessionCommandRouterAfterRebindInstalled.has(interactive));
|
|
27
|
+
}
|
|
28
|
+
export function markSessionCommandRouterAfterRebindInstalled(interactive) {
|
|
29
|
+
sessionCommandRouterAfterRebindInstalled.add(interactive);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=linx-interactive-command-routing-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-command-routing-host.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-command-routing-host.ts"],"names":[],"mappings":"AAAA,MAAM,6BAA6B,GAAG,IAAI,OAAO,EAAU,CAAA;AAC3D,MAAM,2BAA2B,GAAG,IAAI,OAAO,EAAU,CAAA;AACzD,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAAU,CAAA;AACxD,MAAM,wCAAwC,GAAG,IAAI,OAAO,EAAU,CAAA;AAEtE,MAAM,UAAU,+BAA+B,CAAC,WAAoB;IAClE,OAAO,OAAO,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,6BAA6B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;AAClH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,WAAmB;IACnE,6BAA6B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,WAAoB;IAChE,OAAO,OAAO,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;AAChH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IACjE,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AACrG,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAiB;IAC7D,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAGD,MAAM,UAAU,0CAA0C,CAAC,WAAoB;IAC7E,OAAO,OAAO,CACZ,WAAW;WACN,OAAO,WAAW,KAAK,QAAQ;WAC/B,wCAAwC,CAAC,GAAG,CAAC,WAAW,CAAC,CAC/D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,4CAA4C,CAAC,WAAmB;IAC9E,wCAAwC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { parseLinxShellCommand } from './linx-shell-command-router.js';
|
|
2
|
+
import { installLinxAutoEditorIndicator } from './linx-auto-editor-indicator.js';
|
|
3
|
+
import { registerLinxInteractiveSubmitHandler } from './linx-interactive-submit-router.js';
|
|
4
|
+
import { setLinxInteractiveEditorText } from './linx-interactive-editor-text-host.js';
|
|
5
|
+
import { configureLinxInteractiveShellState, } from './linx-interactive-shell-state.js';
|
|
6
|
+
import { installLinxSessionCommandRouter as installOwnedLinxSessionCommandRouter, installLinxSessionCommandRouterAfterRebind as installOwnedLinxSessionCommandRouterAfterRebind, } from './linx-session-command-routing.js';
|
|
7
|
+
import { isGlobalCommandHandlerInstalled, markGlobalCommandHandlerInstalled, } from './linx-interactive-command-routing-host.js';
|
|
8
|
+
import { installLinxFinalSubmitCommandRouter as installOwnedLinxFinalSubmitCommandRouter, installLinxInputCommandRouter as installOwnedLinxInputCommandRouter, } from './linx-input-command-routing.js';
|
|
9
|
+
import { recordInteractiveSubmittedUserMessage } from './linx-submitted-user-message-recording.js';
|
|
10
|
+
import { executeLinxShellCommand } from './linx-shell-command-executor.js';
|
|
11
|
+
export function installLinxShellCommands(interactive, runtime, sessionCwd, options = {}) {
|
|
12
|
+
installLinxAutoEditorIndicator(interactive);
|
|
13
|
+
if (options.onAutoControlChange) {
|
|
14
|
+
configureLinxInteractiveShellState(interactive, {
|
|
15
|
+
autoControlChange: options.onAutoControlChange,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
if (options.handleAiConnectCommand) {
|
|
19
|
+
configureLinxInteractiveShellState(interactive, {
|
|
20
|
+
aiConnectCommand: options.handleAiConnectCommand,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
installLinxShellCommandHandler(interactive, runtime);
|
|
24
|
+
}
|
|
25
|
+
export const installLinxGlobalCommands = installLinxShellCommands;
|
|
26
|
+
function installLinxShellCommandHandler(interactive, runtime) {
|
|
27
|
+
if (isGlobalCommandHandlerInstalled(interactive)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
registerLinxInteractiveSubmitHandler(interactive, {
|
|
31
|
+
name: 'linx-shell-command',
|
|
32
|
+
priority: 50,
|
|
33
|
+
async handler({ interactive: target, text, input, originalSubmit }) {
|
|
34
|
+
const command = parseLinxShellCommand(input);
|
|
35
|
+
if (!command) {
|
|
36
|
+
recordInteractiveSubmittedUserMessage(target, runtime, text);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
setLinxInteractiveEditorText(target, '');
|
|
40
|
+
await executeLinxShellCommand(target, runtime, command);
|
|
41
|
+
return true;
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
markGlobalCommandHandlerInstalled(interactive);
|
|
45
|
+
configureLinxInteractiveShellState(interactive, {
|
|
46
|
+
projectedGlobalCommand: async (text) => {
|
|
47
|
+
const command = parseLinxShellCommand(text.trim());
|
|
48
|
+
if (!command) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
await executeLinxShellCommand(interactive, runtime, command);
|
|
52
|
+
if (command.action === 'peer-command') {
|
|
53
|
+
return 'peer-command';
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
installProjectedCommandRouter(interactive);
|
|
59
|
+
}
|
|
60
|
+
export function installLinxInputCommandRouter(interactive, runtime) {
|
|
61
|
+
installOwnedLinxInputCommandRouter(interactive, runtime, executeLinxShellCommand);
|
|
62
|
+
}
|
|
63
|
+
export function installLinxFinalSubmitCommandRouter(interactive, runtime) {
|
|
64
|
+
installOwnedLinxFinalSubmitCommandRouter(interactive, runtime, executeLinxShellCommand);
|
|
65
|
+
}
|
|
66
|
+
export function installLinxSessionCommandRouter(interactive, runtime) {
|
|
67
|
+
installOwnedLinxSessionCommandRouter(interactive, runtime, executeLinxShellCommand);
|
|
68
|
+
}
|
|
69
|
+
export function installLinxSessionCommandRouterAfterRebind(interactive, runtime) {
|
|
70
|
+
installOwnedLinxSessionCommandRouterAfterRebind(interactive, runtime, executeLinxShellCommand);
|
|
71
|
+
}
|
|
72
|
+
export function installProjectedCommandRouter(interactive) {
|
|
73
|
+
configureLinxInteractiveShellState(interactive, {});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=linx-interactive-command-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-command-routing.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-command-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { installBackendCommandRouter } from './linx-backend-command-router.js';
|
|
2
|
+
import { installSymphonyAutocomplete } from './linx-command-autocomplete.js';
|
|
3
|
+
import { installLinxSessionCommandRouter, installLinxSessionCommandRouterAfterRebind, installLinxShellCommands, } from './linx-interactive-command-routing.js';
|
|
4
|
+
import { installSymphonyCommand } from './linx-symphony-interactive-command.js';
|
|
5
|
+
import { installSessionControlRuntimeEventBridge } from './session-control.js';
|
|
6
|
+
export function installLinxInteractiveCommandSurface(interactive, runtime, options) {
|
|
7
|
+
runtime?.backendCommandRouter?.setSessionControl?.(options.sessionControlManager);
|
|
8
|
+
installSymphonyAutocomplete(interactive);
|
|
9
|
+
installLinxShellCommands(interactive, runtime, options.sessionCwd, options.shellCommandOptions);
|
|
10
|
+
installSymphonyCommand(interactive);
|
|
11
|
+
installBackendCommandRouter(interactive, runtime?.backendCommandRouter);
|
|
12
|
+
installSessionControlRuntimeEventBridge(interactive, runtime, options.sessionCwd);
|
|
13
|
+
installLinxSessionCommandRouter(interactive, runtime);
|
|
14
|
+
installLinxSessionCommandRouterAfterRebind(interactive, runtime);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=linx-interactive-command-surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-command-surface.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-command-surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,EAC1C,wBAAwB,GACzB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,uCAAuC,EAA8B,MAAM,sBAAsB,CAAA;AAW1G,MAAM,UAAU,oCAAoC,CAClD,WAAgB,EAChB,OAAY,EACZ,OAA6C;IAE7C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACjF,2BAA2B,CAAC,WAAW,CAAC,CAAA;IACxC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/F,sBAAsB,CAAC,WAAW,CAAC,CAAA;IACnC,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAA;IACvE,uCAAuC,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IACjF,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACrD,0CAA0C,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function setLinxInteractiveEditorText(interactive, text, options = {}) {
|
|
2
|
+
interactive.editor?.setText?.(text);
|
|
3
|
+
if (options.focus) {
|
|
4
|
+
interactive.ui?.setFocus?.(interactive.editor);
|
|
5
|
+
}
|
|
6
|
+
if (options.render) {
|
|
7
|
+
interactive.ui?.requestRender?.();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function getLinxInteractiveEditorText(interactive) {
|
|
11
|
+
if (typeof interactive?.editor?.getText !== 'function') {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return String(interactive.editor.getText() ?? '');
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=linx-interactive-editor-text-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-editor-text-host.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-editor-text-host.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,4BAA4B,CAC1C,WAAgB,EAChB,IAAY,EACZ,UAA4C,EAAE;IAE9C,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAA;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAgB;IAC3D,IAAI,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;QACvD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linx-interactive-error-display.js","sourceRoot":"","sources":["../../src/lib/linx-interactive-error-display.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,wBAAwB,CACtC,MAA4D,EAC5D,OAAe;IAEf,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC"}
|