@akon-labs/nexus-cli 0.1.11-rc.2 → 0.1.11

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.
Files changed (57) hide show
  1. package/dist/cli.js +588 -63
  2. package/dist/core/graph-rail-store.d.ts +10 -0
  3. package/dist/core/graph-rail-store.d.ts.map +1 -1
  4. package/dist/core/graph-rail-store.js +9 -0
  5. package/dist/core/graph-rail-store.js.map +1 -1
  6. package/dist/core/keybindings.d.ts +2 -1
  7. package/dist/core/keybindings.d.ts.map +1 -1
  8. package/dist/core/keybindings.js +4 -1
  9. package/dist/core/keybindings.js.map +1 -1
  10. package/dist/extensions/gitnexus/client.d.ts.map +1 -1
  11. package/dist/extensions/gitnexus/client.js +45 -14
  12. package/dist/extensions/gitnexus/client.js.map +1 -1
  13. package/dist/extensions/gitnexus/hub-api.d.ts +56 -0
  14. package/dist/extensions/gitnexus/hub-api.d.ts.map +1 -0
  15. package/dist/extensions/gitnexus/hub-api.js +105 -0
  16. package/dist/extensions/gitnexus/hub-api.js.map +1 -0
  17. package/dist/extensions/gitnexus/index-repo.d.ts +50 -0
  18. package/dist/extensions/gitnexus/index-repo.d.ts.map +1 -0
  19. package/dist/extensions/gitnexus/index-repo.js +162 -0
  20. package/dist/extensions/gitnexus/index-repo.js.map +1 -0
  21. package/dist/extensions/gitnexus/index.d.ts.map +1 -1
  22. package/dist/extensions/gitnexus/index.js +135 -15
  23. package/dist/extensions/gitnexus/index.js.map +1 -1
  24. package/dist/extensions/gitnexus/resolve.d.ts +9 -0
  25. package/dist/extensions/gitnexus/resolve.d.ts.map +1 -1
  26. package/dist/extensions/gitnexus/resolve.js +52 -2
  27. package/dist/extensions/gitnexus/resolve.js.map +1 -1
  28. package/dist/index.js +588 -63
  29. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  30. package/dist/modes/interactive/components/assistant-message.js +2 -0
  31. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  32. package/dist/modes/interactive/components/command-palette.d.ts +2 -1
  33. package/dist/modes/interactive/components/command-palette.d.ts.map +1 -1
  34. package/dist/modes/interactive/components/command-palette.js +11 -4
  35. package/dist/modes/interactive/components/command-palette.js.map +1 -1
  36. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  37. package/dist/modes/interactive/components/footer.js +9 -3
  38. package/dist/modes/interactive/components/footer.js.map +1 -1
  39. package/dist/modes/interactive/components/graph-rail.d.ts.map +1 -1
  40. package/dist/modes/interactive/components/graph-rail.js +18 -3
  41. package/dist/modes/interactive/components/graph-rail.js.map +1 -1
  42. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -0
  43. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  44. package/dist/modes/interactive/components/keybinding-hints.js +7 -1
  45. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  46. package/dist/modes/interactive/components/landing-panel.d.ts.map +1 -1
  47. package/dist/modes/interactive/components/landing-panel.js +15 -2
  48. package/dist/modes/interactive/components/landing-panel.js.map +1 -1
  49. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  50. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  51. package/dist/modes/interactive/interactive-mode.js +35 -5
  52. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  53. package/dist/rpc-entry.js +588 -63
  54. package/dist/vendor/ai.js +14 -14
  55. package/dist/vendor/tui.js +1 -1
  56. package/npm-shrinkwrap.json +2 -2
  57. package/package.json +1 -1
@@ -167,11 +167,15 @@ function formatLoginProviderCompletionDescription(provider) {
167
167
  const authTypes = provider.authTypes.map(formatAuthSelectorProviderType).join("/");
168
168
  return provider.name === provider.id ? authTypes : `${provider.name} · ${authTypes}`;
169
169
  }
170
+ const FULLSCREEN_WHEEL_SCROLL_LINES = 3;
170
171
  /** Composition root for selecting the interactive terminal renderer. */
171
172
  export function createInteractiveTui(options) {
172
173
  const terminal = options.terminal ?? new ProcessTerminal();
173
174
  if (options.uiMode === "fullscreen") {
174
- return new TuiAltScreen(terminal, options.showHardwareCursor, options.logDirectory, { openUrl: openBrowser });
175
+ return new TuiAltScreen(terminal, options.showHardwareCursor, options.logDirectory, {
176
+ openUrl: openBrowser,
177
+ wheelScrollLines: FULLSCREEN_WHEEL_SCROLL_LINES,
178
+ });
175
179
  }
176
180
  return new TuiMainScreen(terminal, options.showHardwareCursor, options.logDirectory);
177
181
  }
@@ -243,6 +247,7 @@ export class InteractiveMode {
243
247
  defaultHiddenThinkingLabel = "Thinking...";
244
248
  hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
245
249
  lastSigintTime = 0;
250
+ quitConfirmationTimer;
246
251
  lastEscapeTime = 0;
247
252
  anthropicSubscriptionWarningShown = false;
248
253
  // Status line tracking (for mutating immediately-sequential status updates)
@@ -437,6 +442,10 @@ export class InteractiveMode {
437
442
  handle.hide();
438
443
  this.ui.setFocus(this.editor);
439
444
  void this.defaultEditor.onSubmit?.(commandText);
445
+ }, (commandText) => {
446
+ handle.hide();
447
+ this.editor.setText(commandText);
448
+ this.ui.setFocus(this.editor);
440
449
  }, () => {
441
450
  handle.hide();
442
451
  this.ui.setFocus(this.editor);
@@ -3103,13 +3112,30 @@ export class InteractiveMode {
3103
3112
  // =========================================================================
3104
3113
  handleCtrlC() {
3105
3114
  const now = Date.now();
3106
- if (now - this.lastSigintTime < 500) {
3115
+ if (now - this.lastSigintTime < 2_000) {
3116
+ if (this.quitConfirmationTimer) {
3117
+ clearTimeout(this.quitConfirmationTimer);
3118
+ this.quitConfirmationTimer = undefined;
3119
+ }
3120
+ this.lastSigintTime = 0;
3121
+ this.setExtensionStatus("quit-confirmation", undefined);
3107
3122
  void this.shutdown();
3123
+ return;
3108
3124
  }
3109
- else {
3110
- this.clearEditor();
3111
- this.lastSigintTime = now;
3125
+ if (this.quitConfirmationTimer) {
3126
+ clearTimeout(this.quitConfirmationTimer);
3112
3127
  }
3128
+ this.clearEditor();
3129
+ this.lastSigintTime = now;
3130
+ const shortcut = formatKeyText(this.keybindings.getKeys("app.clear").join("/"), { capitalize: true });
3131
+ this.setExtensionStatus("quit-confirmation", `Press ${shortcut} again to exit`);
3132
+ this.quitConfirmationTimer = setTimeout(() => {
3133
+ if (this.lastSigintTime !== now)
3134
+ return;
3135
+ this.lastSigintTime = 0;
3136
+ this.quitConfirmationTimer = undefined;
3137
+ this.setExtensionStatus("quit-confirmation", undefined);
3138
+ }, 2_000);
3113
3139
  }
3114
3140
  handleCtrlD() {
3115
3141
  // Only called when editor is empty (enforced by CustomEditor)
@@ -3125,6 +3151,10 @@ export class InteractiveMode {
3125
3151
  if (this.isShuttingDown)
3126
3152
  return;
3127
3153
  this.isShuttingDown = true;
3154
+ if (this.quitConfirmationTimer) {
3155
+ clearTimeout(this.quitConfirmationTimer);
3156
+ this.quitConfirmationTimer = undefined;
3157
+ }
3128
3158
  this.graphRailUnsubscribe?.();
3129
3159
  this.graphRailUnsubscribe = undefined;
3130
3160
  this.landingPanel?.dispose();