@qodalis/cli 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qodalis/cli",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Framework-agnostic CLI engine for @qodalis terminal applications.",
5
5
  "author": "Nicolae Lupei, Qodalis Solutions",
6
6
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "./assets/*": "./assets/*"
31
31
  },
32
32
  "dependencies": {
33
- "@qodalis/cli-core": "2.1.0",
33
+ "@qodalis/cli-core": "2.2.0",
34
34
  "@xterm/xterm": "^6.0.0",
35
35
  "@xterm/addon-fit": "^0.11.0",
36
36
  "@xterm/addon-web-links": "^0.12.0",
package/public-api.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { ICliCommandProcessor, ICliCommandParameterDescriptor as ICliCommandParameterDescriptor$1, ICliCommandProcessorRegistry, ICliCommandChildProcessor, CliProcessorMetadata, CliStateConfiguration, ICliExecutionContext, CliProcessCommand, ICliCommandAuthor, ICliCommandControls, CliThemeInfo, ICliExecutionProcess, ICliUserSession, ICliSpinner, ICliPercentageProgressBar, ICliTextAnimator, ICliTerminalWriter, ICliCommandExecutorService, ICliClipboard, ICliStateStore, CliOptions, ICliLogger, ICliServiceProvider, ICliTranslationService, ICliInputReader, ICliBackgroundServiceRegistry, ICliHttpClient, ICliNotifier, ICliManagedInterval, ICliManagedTimer, ICliEventBus, ICliKeyValueStore, CliStateStoreOptions, ICliCompletionProvider, ICliFilePickerProvider, CliFullScreenOptions, ICliProcessRegistry, ICliBackgroundService, ICliServiceContext, ICliBackgroundServiceInfo, ICliServiceLogEntry, CliServiceEventHandler, ICliGlobalParameterHandler, CliForegroundColor, CliBackgroundColor, CliToken, CliProvider, CliTableOptions, CliLogLevel, CliPercentageProgressBarUpdateValueOptions, CliTextAnimatorOptions, ICliModule, CliModuleRegistry, Package, ICliPingServerService, CliLineOptions, CliSelectOption, CliSelectOptions, CliMultiSelectOption, CliMultiSelectOptions, CliNumberOptions, CliDateOptions, CliFilePickerOptions, CliFileResult, ICliProcessRegisterOptions, ICliProcessEntry, ICliDragDropService, CliHttpRequestOptions, CliNotification, ICliPermissionRegistry, CliPermissionDefinition, CliBranding, CliState, CliEngineSnapshot, CliEvent, CliEventType, CliEventMap, CliEmitOptions, CustomEventType, CliEventHandler, CliServerConfig, ICliServerAuthService, CliServerCommandDescriptor, CliServerCapabilities, CliServerResponse, CliServerOutput, CliPanelPosition, CliPanelConfig, CliPanelHideAlignment, ICliPanelRef, CliPanelState } from '@qodalis/cli-core';
1
+ import { ICliCommandProcessor, ICliCommandParameterDescriptor as ICliCommandParameterDescriptor$1, ICliCommandProcessorRegistry, ICliCommandChildProcessor, CliProcessorMetadata, CliStateConfiguration, ICliExecutionContext, CliProcessCommand, ICliCommandAuthor, ICliCommandControls, CliThemeInfo, ICliExecutionProcess, ICliUserSession, ICliSpinner, ICliPercentageProgressBar, ICliTextAnimator, ICliTerminalWriter, ICliCommandExecutorService, ICliClipboard, ICliStateStore, CliOptions, ICliLogger, ICliServiceProvider, ICliTranslationService, ICliInputReader, ICliBackgroundServiceRegistry, ICliHttpClient, ICliNotifier, ICliManagedInterval, ICliManagedTimer, ICliEventBus, ICliKeyValueStore, CliStateStoreOptions, ICliCompletionProvider, ICliFilePickerProvider, CliFullScreenOptions, ICliProcessRegistry, ICliBackgroundService, ICliServiceContext, ICliBackgroundServiceInfo, ICliServiceLogEntry, CliServiceEventHandler, ICliGlobalParameterHandler, CliForegroundColor, CliBackgroundColor, CliToken, CliProvider, CliTableOptions, CliLogLevel, CliPercentageProgressBarUpdateValueOptions, CliTextAnimatorOptions, ICliModule, CliModuleRegistry, Package, ICliPingServerService, CliLineOptions, CliSelectOption, CliSelectOptions, CliMultiSelectOption, CliMultiSelectOptions, CliNumberOptions, CliDateOptions, CliFilePickerOptions, CliFileResult, ICliProcessRegisterOptions, ICliProcessEntry, ICliDragDropService, CliHttpRequestOptions, CliNotification, ICliPermissionRegistry, CliPermissionDefinition, CliBranding, CliState, CliEngineSnapshot, CliEvent, CliEventType, CliEventMap, CliEmitOptions, CustomEventType, CliEventHandler, CliServerConfig, ICliServerAuthService, CliServerCommandDescriptor, CliServerCapabilities, CliServerResponse, CliServerOutput, CliPanelPosition, CliPanelConfig, CliPanelHideAlignment, ICliPanelRef, CliPanelThemeInput, CliPanelState } from '@qodalis/cli-core';
2
2
  export { ICliUserSessionService_TOKEN, ICliUsersStoreService_TOKEN } from '@qodalis/cli-core';
3
3
  import { ITheme, Terminal, ITerminalAddon, ITerminalOptions, ITerminalInitOnlyOptions } from '@xterm/xterm';
4
4
  import * as rxjs from 'rxjs';
@@ -165,7 +165,7 @@ declare const CliKeyValueStore_TOKEN: any;
165
165
  */
166
166
  declare const SyntaxHighlighterRegistry_TOKEN: any;
167
167
 
168
- declare const LIBRARY_VERSION = "2.1.0";
168
+ declare const LIBRARY_VERSION = "2.2.0";
169
169
  declare const API_VERSION = 2;
170
170
 
171
171
  declare class CliAliasCommandProcessor implements ICliCommandProcessor {
@@ -2977,6 +2977,11 @@ declare class CliEngine {
2977
2977
  * Focus the terminal and fit to container.
2978
2978
  */
2979
2979
  focus(): void;
2980
+ /**
2981
+ * Restyle the terminal: its colors and the background around it.
2982
+ * The `theme` command can still change it afterwards.
2983
+ */
2984
+ setTheme(theme: ITheme): void;
2980
2985
  /**
2981
2986
  * Get the underlying xterm.js Terminal instance.
2982
2987
  */
@@ -3182,6 +3187,12 @@ declare class CliServerConnection {
3182
3187
  onReconnected?: () => void;
3183
3188
  constructor(_config: CliServerConfig, _backgroundServices?: ICliBackgroundServiceRegistry, _logger?: ICliLogger, _authService?: ICliServerAuthService);
3184
3189
  get config(): CliServerConfig;
3190
+ /**
3191
+ * The last connect was refused for want of a sign-in (401 or 403 on the
3192
+ * command list): the server is up, and a sign-in reconnects it.
3193
+ */
3194
+ get needsSignIn(): boolean;
3195
+ private _needsSignIn;
3185
3196
  get connected(): boolean;
3186
3197
  get commands(): CliServerCommandDescriptor[];
3187
3198
  get capabilities(): CliServerCapabilities | null;
@@ -3689,7 +3700,19 @@ interface CliPanelSnapshot {
3689
3700
  /** Status text is shown in the header for top/bottom, compact dots otherwise. */
3690
3701
  showStatusIndicators: boolean;
3691
3702
  panelResizing: boolean;
3703
+ /** CSS custom properties of the theme, for the wrapper and the hide tab. */
3692
3704
  themeStyles: Record<string, string>;
3705
+ /** Whether the panel is light or dark. */
3706
+ scheme: 'light' | 'dark';
3707
+ /** Theme the host set for the terminals; undefined leaves them alone. */
3708
+ terminalTheme?: ITheme;
3709
+ /**
3710
+ * Height of the on-screen keyboard over the page (0 when closed), from the
3711
+ * visual viewport: the panel moves above it.
3712
+ */
3713
+ keyboardInset: number;
3714
+ /** Height of the visible area (visual viewport), 0 when unknown; caps the panel's height. */
3715
+ visibleHeight: number;
3693
3716
  closable: boolean;
3694
3717
  resizable: boolean;
3695
3718
  hideable: boolean;
@@ -3822,11 +3845,21 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3822
3845
  private documentListenersAttached;
3823
3846
  private rootElement;
3824
3847
  private themeObserver?;
3848
+ /** The host's theme (`config.theme`); undefined leaves the terminals' own theme alone. */
3849
+ private themeInput?;
3850
+ private resolvedTheme;
3851
+ private schemeQuery?;
3852
+ private visualViewport?;
3825
3853
  constructor(options?: CliPanelControllerOptions);
3826
3854
  readonly subscribe: (listener: () => void) => (() => void);
3827
3855
  readonly getSnapshot: () => CliPanelSnapshot;
3828
- /** Apply a new panel configuration (chrome buttons, theme sync). */
3856
+ /** Apply a new panel configuration (chrome buttons, theme, theme sync). */
3829
3857
  setOptions(config: CliPanelConfig | undefined): void;
3858
+ /**
3859
+ * Restyle the panel and every terminal in it (see `CliPanelConfig.theme`).
3860
+ * `undefined` returns to the default palette and leaves the terminals' theme alone.
3861
+ */
3862
+ setTheme(theme: CliPanelThemeInput | undefined): void;
3830
3863
  /** Replace the change callbacks (wrappers call this when their props change). */
3831
3864
  setCallbacks(callbacks: CliPanelCallbacks): void;
3832
3865
  /** Update host-controlled values. Unchanged values are ignored. */
@@ -3886,9 +3919,9 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3886
3919
  toggleServersDropdown(anchor?: Element | null): void;
3887
3920
  /** Close the context menu and every dropdown. */
3888
3921
  closeMenus(): void;
3889
- /** Mouse down on the panel's resize bar. */
3922
+ /** Pointer (mouse, touch or pen) down on the panel's resize bar. */
3890
3923
  startPanelResize(clientX: number, clientY: number): void;
3891
- /** Mouse down on the divider before pane `dividerIndex + 1` of a tab. */
3924
+ /** Pointer down on the divider before pane `dividerIndex + 1` of a tab. */
3892
3925
  startPaneResize(tabId: number, dividerIndex: number, clientX: number, containerWidth: number): void;
3893
3926
  private readonly onPanelResizeMove;
3894
3927
  private readonly onPanelResizeEnd;
@@ -3908,6 +3941,17 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3908
3941
  * Engines are registered after they start, so their theme is set.
3909
3942
  */
3910
3943
  private startThemeSync;
3944
+ private applyTheme;
3945
+ /** Follow the system's light/dark setting while the theme is 'auto'. */
3946
+ private watchSystemScheme;
3947
+ private readonly onSystemSchemeChange;
3948
+ /**
3949
+ * Phone browsers open the keyboard over the page and shrink only the visual
3950
+ * viewport; follow it so the panel stays above the keyboard.
3951
+ */
3952
+ private watchVisualViewport;
3953
+ private unwatchVisualViewport;
3954
+ private readonly onVisualViewportChange;
3911
3955
  private stopThemeSync;
3912
3956
  private ensureInitialized;
3913
3957
  private updateCollapsed;
@@ -4011,6 +4055,7 @@ declare function positionDropdownItemClass(s: CliPanelSnapshot, position: CliPan
4011
4055
  /** Size, visibility and theme variables of the panel wrapper. */
4012
4056
  declare function panelWrapperStyle(s: CliPanelSnapshot): Record<string, string>;
4013
4057
  declare function paneStyle(widthPercent: number): Record<string, string>;
4058
+ /** Menus render outside the panel element, so they carry the theme's variables themselves. */
4014
4059
  declare function contextMenuStyle(s: CliPanelSnapshot): Record<string, string>;
4015
4060
  interface PanelStatusIndicator {
4016
4061
  key: 'execution' | 'services' | 'lastCommand' | 'servers' | 'uptime' | 'notification';
package/public-api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ICliCommandProcessor, ICliCommandParameterDescriptor as ICliCommandParameterDescriptor$1, ICliCommandProcessorRegistry, ICliCommandChildProcessor, CliProcessorMetadata, CliStateConfiguration, ICliExecutionContext, CliProcessCommand, ICliCommandAuthor, ICliCommandControls, CliThemeInfo, ICliExecutionProcess, ICliUserSession, ICliSpinner, ICliPercentageProgressBar, ICliTextAnimator, ICliTerminalWriter, ICliCommandExecutorService, ICliClipboard, ICliStateStore, CliOptions, ICliLogger, ICliServiceProvider, ICliTranslationService, ICliInputReader, ICliBackgroundServiceRegistry, ICliHttpClient, ICliNotifier, ICliManagedInterval, ICliManagedTimer, ICliEventBus, ICliKeyValueStore, CliStateStoreOptions, ICliCompletionProvider, ICliFilePickerProvider, CliFullScreenOptions, ICliProcessRegistry, ICliBackgroundService, ICliServiceContext, ICliBackgroundServiceInfo, ICliServiceLogEntry, CliServiceEventHandler, ICliGlobalParameterHandler, CliForegroundColor, CliBackgroundColor, CliToken, CliProvider, CliTableOptions, CliLogLevel, CliPercentageProgressBarUpdateValueOptions, CliTextAnimatorOptions, ICliModule, CliModuleRegistry, Package, ICliPingServerService, CliLineOptions, CliSelectOption, CliSelectOptions, CliMultiSelectOption, CliMultiSelectOptions, CliNumberOptions, CliDateOptions, CliFilePickerOptions, CliFileResult, ICliProcessRegisterOptions, ICliProcessEntry, ICliDragDropService, CliHttpRequestOptions, CliNotification, ICliPermissionRegistry, CliPermissionDefinition, CliBranding, CliState, CliEngineSnapshot, CliEvent, CliEventType, CliEventMap, CliEmitOptions, CustomEventType, CliEventHandler, CliServerConfig, ICliServerAuthService, CliServerCommandDescriptor, CliServerCapabilities, CliServerResponse, CliServerOutput, CliPanelPosition, CliPanelConfig, CliPanelHideAlignment, ICliPanelRef, CliPanelState } from '@qodalis/cli-core';
1
+ import { ICliCommandProcessor, ICliCommandParameterDescriptor as ICliCommandParameterDescriptor$1, ICliCommandProcessorRegistry, ICliCommandChildProcessor, CliProcessorMetadata, CliStateConfiguration, ICliExecutionContext, CliProcessCommand, ICliCommandAuthor, ICliCommandControls, CliThemeInfo, ICliExecutionProcess, ICliUserSession, ICliSpinner, ICliPercentageProgressBar, ICliTextAnimator, ICliTerminalWriter, ICliCommandExecutorService, ICliClipboard, ICliStateStore, CliOptions, ICliLogger, ICliServiceProvider, ICliTranslationService, ICliInputReader, ICliBackgroundServiceRegistry, ICliHttpClient, ICliNotifier, ICliManagedInterval, ICliManagedTimer, ICliEventBus, ICliKeyValueStore, CliStateStoreOptions, ICliCompletionProvider, ICliFilePickerProvider, CliFullScreenOptions, ICliProcessRegistry, ICliBackgroundService, ICliServiceContext, ICliBackgroundServiceInfo, ICliServiceLogEntry, CliServiceEventHandler, ICliGlobalParameterHandler, CliForegroundColor, CliBackgroundColor, CliToken, CliProvider, CliTableOptions, CliLogLevel, CliPercentageProgressBarUpdateValueOptions, CliTextAnimatorOptions, ICliModule, CliModuleRegistry, Package, ICliPingServerService, CliLineOptions, CliSelectOption, CliSelectOptions, CliMultiSelectOption, CliMultiSelectOptions, CliNumberOptions, CliDateOptions, CliFilePickerOptions, CliFileResult, ICliProcessRegisterOptions, ICliProcessEntry, ICliDragDropService, CliHttpRequestOptions, CliNotification, ICliPermissionRegistry, CliPermissionDefinition, CliBranding, CliState, CliEngineSnapshot, CliEvent, CliEventType, CliEventMap, CliEmitOptions, CustomEventType, CliEventHandler, CliServerConfig, ICliServerAuthService, CliServerCommandDescriptor, CliServerCapabilities, CliServerResponse, CliServerOutput, CliPanelPosition, CliPanelConfig, CliPanelHideAlignment, ICliPanelRef, CliPanelThemeInput, CliPanelState } from '@qodalis/cli-core';
2
2
  export { ICliUserSessionService_TOKEN, ICliUsersStoreService_TOKEN } from '@qodalis/cli-core';
3
3
  import { ITheme, Terminal, ITerminalAddon, ITerminalOptions, ITerminalInitOnlyOptions } from '@xterm/xterm';
4
4
  import * as rxjs from 'rxjs';
@@ -165,7 +165,7 @@ declare const CliKeyValueStore_TOKEN: any;
165
165
  */
166
166
  declare const SyntaxHighlighterRegistry_TOKEN: any;
167
167
 
168
- declare const LIBRARY_VERSION = "2.1.0";
168
+ declare const LIBRARY_VERSION = "2.2.0";
169
169
  declare const API_VERSION = 2;
170
170
 
171
171
  declare class CliAliasCommandProcessor implements ICliCommandProcessor {
@@ -2977,6 +2977,11 @@ declare class CliEngine {
2977
2977
  * Focus the terminal and fit to container.
2978
2978
  */
2979
2979
  focus(): void;
2980
+ /**
2981
+ * Restyle the terminal: its colors and the background around it.
2982
+ * The `theme` command can still change it afterwards.
2983
+ */
2984
+ setTheme(theme: ITheme): void;
2980
2985
  /**
2981
2986
  * Get the underlying xterm.js Terminal instance.
2982
2987
  */
@@ -3182,6 +3187,12 @@ declare class CliServerConnection {
3182
3187
  onReconnected?: () => void;
3183
3188
  constructor(_config: CliServerConfig, _backgroundServices?: ICliBackgroundServiceRegistry, _logger?: ICliLogger, _authService?: ICliServerAuthService);
3184
3189
  get config(): CliServerConfig;
3190
+ /**
3191
+ * The last connect was refused for want of a sign-in (401 or 403 on the
3192
+ * command list): the server is up, and a sign-in reconnects it.
3193
+ */
3194
+ get needsSignIn(): boolean;
3195
+ private _needsSignIn;
3185
3196
  get connected(): boolean;
3186
3197
  get commands(): CliServerCommandDescriptor[];
3187
3198
  get capabilities(): CliServerCapabilities | null;
@@ -3689,7 +3700,19 @@ interface CliPanelSnapshot {
3689
3700
  /** Status text is shown in the header for top/bottom, compact dots otherwise. */
3690
3701
  showStatusIndicators: boolean;
3691
3702
  panelResizing: boolean;
3703
+ /** CSS custom properties of the theme, for the wrapper and the hide tab. */
3692
3704
  themeStyles: Record<string, string>;
3705
+ /** Whether the panel is light or dark. */
3706
+ scheme: 'light' | 'dark';
3707
+ /** Theme the host set for the terminals; undefined leaves them alone. */
3708
+ terminalTheme?: ITheme;
3709
+ /**
3710
+ * Height of the on-screen keyboard over the page (0 when closed), from the
3711
+ * visual viewport: the panel moves above it.
3712
+ */
3713
+ keyboardInset: number;
3714
+ /** Height of the visible area (visual viewport), 0 when unknown; caps the panel's height. */
3715
+ visibleHeight: number;
3693
3716
  closable: boolean;
3694
3717
  resizable: boolean;
3695
3718
  hideable: boolean;
@@ -3822,11 +3845,21 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3822
3845
  private documentListenersAttached;
3823
3846
  private rootElement;
3824
3847
  private themeObserver?;
3848
+ /** The host's theme (`config.theme`); undefined leaves the terminals' own theme alone. */
3849
+ private themeInput?;
3850
+ private resolvedTheme;
3851
+ private schemeQuery?;
3852
+ private visualViewport?;
3825
3853
  constructor(options?: CliPanelControllerOptions);
3826
3854
  readonly subscribe: (listener: () => void) => (() => void);
3827
3855
  readonly getSnapshot: () => CliPanelSnapshot;
3828
- /** Apply a new panel configuration (chrome buttons, theme sync). */
3856
+ /** Apply a new panel configuration (chrome buttons, theme, theme sync). */
3829
3857
  setOptions(config: CliPanelConfig | undefined): void;
3858
+ /**
3859
+ * Restyle the panel and every terminal in it (see `CliPanelConfig.theme`).
3860
+ * `undefined` returns to the default palette and leaves the terminals' theme alone.
3861
+ */
3862
+ setTheme(theme: CliPanelThemeInput | undefined): void;
3830
3863
  /** Replace the change callbacks (wrappers call this when their props change). */
3831
3864
  setCallbacks(callbacks: CliPanelCallbacks): void;
3832
3865
  /** Update host-controlled values. Unchanged values are ignored. */
@@ -3886,9 +3919,9 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3886
3919
  toggleServersDropdown(anchor?: Element | null): void;
3887
3920
  /** Close the context menu and every dropdown. */
3888
3921
  closeMenus(): void;
3889
- /** Mouse down on the panel's resize bar. */
3922
+ /** Pointer (mouse, touch or pen) down on the panel's resize bar. */
3890
3923
  startPanelResize(clientX: number, clientY: number): void;
3891
- /** Mouse down on the divider before pane `dividerIndex + 1` of a tab. */
3924
+ /** Pointer down on the divider before pane `dividerIndex + 1` of a tab. */
3892
3925
  startPaneResize(tabId: number, dividerIndex: number, clientX: number, containerWidth: number): void;
3893
3926
  private readonly onPanelResizeMove;
3894
3927
  private readonly onPanelResizeEnd;
@@ -3908,6 +3941,17 @@ declare class CliPanelController implements ICliPanelRef<CliEngine> {
3908
3941
  * Engines are registered after they start, so their theme is set.
3909
3942
  */
3910
3943
  private startThemeSync;
3944
+ private applyTheme;
3945
+ /** Follow the system's light/dark setting while the theme is 'auto'. */
3946
+ private watchSystemScheme;
3947
+ private readonly onSystemSchemeChange;
3948
+ /**
3949
+ * Phone browsers open the keyboard over the page and shrink only the visual
3950
+ * viewport; follow it so the panel stays above the keyboard.
3951
+ */
3952
+ private watchVisualViewport;
3953
+ private unwatchVisualViewport;
3954
+ private readonly onVisualViewportChange;
3911
3955
  private stopThemeSync;
3912
3956
  private ensureInitialized;
3913
3957
  private updateCollapsed;
@@ -4011,6 +4055,7 @@ declare function positionDropdownItemClass(s: CliPanelSnapshot, position: CliPan
4011
4055
  /** Size, visibility and theme variables of the panel wrapper. */
4012
4056
  declare function panelWrapperStyle(s: CliPanelSnapshot): Record<string, string>;
4013
4057
  declare function paneStyle(widthPercent: number): Record<string, string>;
4058
+ /** Menus render outside the panel element, so they carry the theme's variables themselves. */
4014
4059
  declare function contextMenuStyle(s: CliPanelSnapshot): Record<string, string>;
4015
4060
  interface PanelStatusIndicator {
4016
4061
  key: 'execution' | 'services' | 'lastCommand' | 'servers' | 'uptime' | 'notification';