@dexto/tui 1.6.8 → 1.6.10

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 (43) hide show
  1. package/dist/components/overlays/LoginOverlay.cjs +41 -50
  2. package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
  3. package/dist/components/overlays/LoginOverlay.js +43 -44
  4. package/dist/components/overlays/ModelSelectorRefactored.cjs +543 -221
  5. package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  6. package/dist/components/overlays/ModelSelectorRefactored.js +553 -223
  7. package/dist/components/overlays/SessionSelectorRefactored.cjs +3 -0
  8. package/dist/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
  9. package/dist/components/overlays/SessionSelectorRefactored.js +3 -0
  10. package/dist/containers/OverlayContainer.cjs +35 -3
  11. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  12. package/dist/containers/OverlayContainer.js +36 -3
  13. package/dist/hooks/useInputOrchestrator.cjs +1 -1
  14. package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
  15. package/dist/hooks/useInputOrchestrator.js +1 -1
  16. package/dist/host/index.cjs +12 -13
  17. package/dist/host/index.d.ts +23 -15
  18. package/dist/host/index.d.ts.map +1 -1
  19. package/dist/host/index.js +10 -11
  20. package/dist/index.d.cts +17 -12
  21. package/dist/interactive-commands/auth/index.d.ts +1 -1
  22. package/dist/interactive-commands/commands.cjs +2 -0
  23. package/dist/interactive-commands/commands.d.ts.map +1 -1
  24. package/dist/interactive-commands/commands.js +3 -1
  25. package/dist/interactive-commands/model/index.cjs +1 -1
  26. package/dist/interactive-commands/model/index.js +1 -1
  27. package/dist/interactive-commands/session/index.cjs +2 -0
  28. package/dist/interactive-commands/session/index.d.ts +2 -1
  29. package/dist/interactive-commands/session/index.d.ts.map +1 -1
  30. package/dist/interactive-commands/session/index.js +2 -1
  31. package/dist/interactive-commands/session/session-commands.cjs +26 -0
  32. package/dist/interactive-commands/session/session-commands.d.ts +5 -0
  33. package/dist/interactive-commands/session/session-commands.d.ts.map +1 -1
  34. package/dist/interactive-commands/session/session-commands.js +25 -0
  35. package/dist/utils/modelOrdering.cjs +106 -0
  36. package/dist/utils/modelOrdering.d.ts +7 -0
  37. package/dist/utils/modelOrdering.d.ts.map +1 -0
  38. package/dist/utils/modelOrdering.js +81 -0
  39. package/dist/utils/modelOrdering.test.cjs +59 -0
  40. package/dist/utils/modelOrdering.test.d.ts +2 -0
  41. package/dist/utils/modelOrdering.test.d.ts.map +1 -0
  42. package/dist/utils/modelOrdering.test.js +61 -0
  43. package/package.json +4 -4
@@ -101,6 +101,9 @@ const SessionSelector = (0, import_react.forwardRef)(
101
101
  } else {
102
102
  parts.push("New Session");
103
103
  }
104
+ if (session.metadata?.parentSessionId) {
105
+ parts.push(`forked from ${session.metadata.parentSessionId.slice(0, 8)}`);
106
+ }
104
107
  parts.push(session.id.slice(0, 8));
105
108
  if (session.metadata?.lastActivity) {
106
109
  const now = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"SessionSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/SessionSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAI/D,UAAU,oBAAoB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAQD;;;;GAIG;AACH,QAAA,MAAM,eAAe,oGA+JpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SessionSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/SessionSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAI/D,UAAU,oBAAoB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAQD;;;;GAIG;AACH,QAAA,MAAM,eAAe,oGAmKpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -78,6 +78,9 @@ const SessionSelector = forwardRef(
78
78
  } else {
79
79
  parts.push("New Session");
80
80
  }
81
+ if (session.metadata?.parentSessionId) {
82
+ parts.push(`forked from ${session.metadata.parentSessionId.slice(0, 8)}`);
83
+ }
81
84
  parts.push(session.id.slice(0, 8));
82
85
  if (session.metadata?.lastActivity) {
83
86
  const now = Date.now();
@@ -336,6 +336,18 @@ const OverlayContainer = (0, import_react.forwardRef)(
336
336
  }
337
337
  return null;
338
338
  };
339
+ const persistRecentModel = (0, import_react.useCallback)(
340
+ async (provider, model) => {
341
+ try {
342
+ await (0, import_agent_management.recordRecentModel)({ provider, model });
343
+ } catch (error) {
344
+ agent.logger.debug(
345
+ `Failed to persist recent model (${provider}/${model}): ${error instanceof Error ? error.message : String(error)}`
346
+ );
347
+ }
348
+ },
349
+ [agent]
350
+ );
339
351
  const handleModelSelect = (0, import_react.useCallback)(
340
352
  async (provider, model, displayName, baseURL, reasoningVariant) => {
341
353
  if (provider === "dexto-nova") {
@@ -388,6 +400,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
388
400
  },
389
401
  session.id || void 0
390
402
  );
403
+ await persistRecentModel(provider, model);
391
404
  setSession((prev) => ({ ...prev, modelName: displayName || model }));
392
405
  setMessages((prev) => [
393
406
  ...prev,
@@ -434,7 +447,16 @@ const OverlayContainer = (0, import_react.forwardRef)(
434
447
  ]);
435
448
  }
436
449
  },
437
- [setUi, setInput, setMessages, setSession, agent, session.id, buffer]
450
+ [
451
+ setUi,
452
+ setInput,
453
+ setMessages,
454
+ setSession,
455
+ agent,
456
+ session.id,
457
+ buffer,
458
+ persistRecentModel
459
+ ]
438
460
  );
439
461
  const handleSetDefaultModel = (0, import_react.useCallback)(
440
462
  async (provider, model, displayName, baseURL, reasoningVariant) => {
@@ -489,6 +511,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
489
511
  },
490
512
  session.id || void 0
491
513
  );
514
+ await persistRecentModel(provider, model);
492
515
  setSession((prev) => ({ ...prev, modelName: displayName || model }));
493
516
  setMessages((prev) => [
494
517
  ...prev,
@@ -538,7 +561,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
538
561
  ]);
539
562
  }
540
563
  },
541
- [agent, setMessages, setSession, setUi, session.id]
564
+ [agent, setMessages, setSession, setUi, session.id, persistRecentModel]
542
565
  );
543
566
  const [editingModel, setEditingModel] = (0, import_react.useState)(null);
544
567
  const handleAddCustomModel = (0, import_react.useCallback)(() => {
@@ -638,6 +661,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
638
661
  },
639
662
  session.id || void 0
640
663
  );
664
+ await persistRecentModel(pending.provider, pending.model);
641
665
  setSession((prev) => ({ ...prev, modelName: pendingDisplayName }));
642
666
  setMessages((prev) => [
643
667
  ...prev,
@@ -660,7 +684,15 @@ const OverlayContainer = (0, import_react.forwardRef)(
660
684
  ]);
661
685
  }
662
686
  },
663
- [ui.pendingModelSwitch, setUi, setMessages, setSession, agent, session.id]
687
+ [
688
+ ui.pendingModelSwitch,
689
+ setUi,
690
+ setMessages,
691
+ setSession,
692
+ agent,
693
+ session.id,
694
+ persistRecentModel
695
+ ]
664
696
  );
665
697
  const handleApiKeyClose = (0, import_react.useCallback)(() => {
666
698
  setUi((prev) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../src/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AAsIzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAsC3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGA0tF5B,CAAC"}
1
+ {"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../src/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AAuIzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAsC3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGA6vF5B,CAAC"}
@@ -33,6 +33,7 @@ import CustomModelWizard from "../components/overlays/CustomModelWizard.js";
33
33
  import {
34
34
  getProviderKeyStatus,
35
35
  loadGlobalPreferences,
36
+ recordRecentModel,
36
37
  updateGlobalPreferences
37
38
  } from "@dexto/agent-management";
38
39
  import ApiKeyInput from "../components/overlays/ApiKeyInput.js";
@@ -321,6 +322,18 @@ const OverlayContainer = forwardRef(
321
322
  }
322
323
  return null;
323
324
  };
325
+ const persistRecentModel = useCallback(
326
+ async (provider, model) => {
327
+ try {
328
+ await recordRecentModel({ provider, model });
329
+ } catch (error) {
330
+ agent.logger.debug(
331
+ `Failed to persist recent model (${provider}/${model}): ${error instanceof Error ? error.message : String(error)}`
332
+ );
333
+ }
334
+ },
335
+ [agent]
336
+ );
324
337
  const handleModelSelect = useCallback(
325
338
  async (provider, model, displayName, baseURL, reasoningVariant) => {
326
339
  if (provider === "dexto-nova") {
@@ -373,6 +386,7 @@ const OverlayContainer = forwardRef(
373
386
  },
374
387
  session.id || void 0
375
388
  );
389
+ await persistRecentModel(provider, model);
376
390
  setSession((prev) => ({ ...prev, modelName: displayName || model }));
377
391
  setMessages((prev) => [
378
392
  ...prev,
@@ -419,7 +433,16 @@ const OverlayContainer = forwardRef(
419
433
  ]);
420
434
  }
421
435
  },
422
- [setUi, setInput, setMessages, setSession, agent, session.id, buffer]
436
+ [
437
+ setUi,
438
+ setInput,
439
+ setMessages,
440
+ setSession,
441
+ agent,
442
+ session.id,
443
+ buffer,
444
+ persistRecentModel
445
+ ]
423
446
  );
424
447
  const handleSetDefaultModel = useCallback(
425
448
  async (provider, model, displayName, baseURL, reasoningVariant) => {
@@ -474,6 +497,7 @@ const OverlayContainer = forwardRef(
474
497
  },
475
498
  session.id || void 0
476
499
  );
500
+ await persistRecentModel(provider, model);
477
501
  setSession((prev) => ({ ...prev, modelName: displayName || model }));
478
502
  setMessages((prev) => [
479
503
  ...prev,
@@ -523,7 +547,7 @@ const OverlayContainer = forwardRef(
523
547
  ]);
524
548
  }
525
549
  },
526
- [agent, setMessages, setSession, setUi, session.id]
550
+ [agent, setMessages, setSession, setUi, session.id, persistRecentModel]
527
551
  );
528
552
  const [editingModel, setEditingModel] = useState(null);
529
553
  const handleAddCustomModel = useCallback(() => {
@@ -623,6 +647,7 @@ const OverlayContainer = forwardRef(
623
647
  },
624
648
  session.id || void 0
625
649
  );
650
+ await persistRecentModel(pending.provider, pending.model);
626
651
  setSession((prev) => ({ ...prev, modelName: pendingDisplayName }));
627
652
  setMessages((prev) => [
628
653
  ...prev,
@@ -645,7 +670,15 @@ const OverlayContainer = forwardRef(
645
670
  ]);
646
671
  }
647
672
  },
648
- [ui.pendingModelSwitch, setUi, setMessages, setSession, agent, session.id]
673
+ [
674
+ ui.pendingModelSwitch,
675
+ setUi,
676
+ setMessages,
677
+ setSession,
678
+ agent,
679
+ session.id,
680
+ persistRecentModel
681
+ ]
649
682
  );
650
683
  const handleApiKeyClose = useCallback(() => {
651
684
  setUi((prev) => ({
@@ -355,7 +355,7 @@ function useInputOrchestrator({
355
355
  handleCtrlC();
356
356
  return;
357
357
  }
358
- if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null) {
358
+ if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null && currentUi.activeOverlay === "none") {
359
359
  setUi((prev) => {
360
360
  const isNormal = !prev.planModeActive && !prev.autoApproveEdits && !prev.bypassPermissions;
361
361
  if (isNormal) {
@@ -1 +1 @@
1
- {"version":3,"file":"useInputOrchestrator.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInputOrchestrator.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -328,7 +328,7 @@ function useInputOrchestrator({
328
328
  handleCtrlC();
329
329
  return;
330
330
  }
331
- if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null) {
331
+ if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null && currentUi.activeOverlay === "none") {
332
332
  setUi((prev) => {
333
333
  const isNormal = !prev.planModeActive && !prev.autoApproveEdits && !prev.bypassPermissions;
334
334
  if (isNormal) {
@@ -19,17 +19,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var host_exports = {};
20
20
  __export(host_exports, {
21
21
  applyLayeredEnvironmentLoading: () => applyLayeredEnvironmentLoading,
22
- beginOAuthLogin: () => beginOAuthLogin,
23
22
  canUseDextoProvider: () => canUseDextoProvider,
24
23
  captureAnalytics: () => captureAnalytics,
25
24
  ensureDextoApiKeyForAuthToken: () => ensureDextoApiKeyForAuthToken,
26
- getDefaultOAuthConfig: () => getDefaultOAuthConfig,
27
25
  getProviderDisplayName: () => getProviderDisplayName,
28
26
  getProviderInstructions: () => getProviderInstructions,
29
27
  getTuiRuntimeServices: () => getTuiRuntimeServices,
30
28
  isUsingDextoCredits: () => isUsingDextoCredits,
31
29
  isValidApiKeyFormat: () => isValidApiKeyFormat,
32
30
  loadAuth: () => loadAuth,
31
+ performDeviceCodeLogin: () => performDeviceCodeLogin,
32
+ persistOAuthLoginResult: () => persistOAuthLoginResult,
33
33
  registerGracefulShutdown: () => registerGracefulShutdown,
34
34
  removeAuth: () => removeAuth,
35
35
  removeDextoApiKeyFromEnv: () => removeDextoApiKeyFromEnv,
@@ -67,18 +67,17 @@ function isValidApiKeyFormat(apiKey, provider) {
67
67
  function getProviderInstructions(provider) {
68
68
  return runtimeServices.getProviderInstructions?.(provider) ?? null;
69
69
  }
70
- function getDefaultOAuthConfig() {
71
- const config = runtimeServices.defaultOAuthConfig;
72
- if (!config) {
73
- throw missingHostMethod("defaultOAuthConfig");
70
+ async function performDeviceCodeLogin(options) {
71
+ if (!runtimeServices.performDeviceCodeLogin) {
72
+ throw missingHostMethod("performDeviceCodeLogin");
74
73
  }
75
- return config;
74
+ return runtimeServices.performDeviceCodeLogin(options);
76
75
  }
77
- async function beginOAuthLogin(config, options) {
78
- if (!runtimeServices.beginOAuthLogin) {
79
- throw missingHostMethod("beginOAuthLogin");
76
+ async function persistOAuthLoginResult(result, options) {
77
+ if (!runtimeServices.persistOAuthLoginResult) {
78
+ throw missingHostMethod("persistOAuthLoginResult");
80
79
  }
81
- return runtimeServices.beginOAuthLogin(config, options);
80
+ return runtimeServices.persistOAuthLoginResult(result, options);
82
81
  }
83
82
  async function ensureDextoApiKeyForAuthToken(authToken, options) {
84
83
  if (!runtimeServices.ensureDextoApiKeyForAuthToken) {
@@ -125,17 +124,17 @@ async function canUseDextoProvider() {
125
124
  // Annotate the CommonJS export names for ESM import in node:
126
125
  0 && (module.exports = {
127
126
  applyLayeredEnvironmentLoading,
128
- beginOAuthLogin,
129
127
  canUseDextoProvider,
130
128
  captureAnalytics,
131
129
  ensureDextoApiKeyForAuthToken,
132
- getDefaultOAuthConfig,
133
130
  getProviderDisplayName,
134
131
  getProviderInstructions,
135
132
  getTuiRuntimeServices,
136
133
  isUsingDextoCredits,
137
134
  isValidApiKeyFormat,
138
135
  loadAuth,
136
+ performDeviceCodeLogin,
137
+ persistOAuthLoginResult,
139
138
  registerGracefulShutdown,
140
139
  removeAuth,
141
140
  removeDextoApiKeyFromEnv,
@@ -10,12 +10,6 @@ export interface TuiAuthConfig {
10
10
  dextoKeyId?: string | undefined;
11
11
  dextoApiKeySource?: 'provisioned' | 'user-supplied' | undefined;
12
12
  }
13
- export interface TuiOAuthConfig {
14
- authUrl: string;
15
- clientId: string;
16
- provider?: string;
17
- scopes?: string[];
18
- }
19
13
  export interface TuiOAuthResult {
20
14
  accessToken: string;
21
15
  refreshToken?: string | undefined;
@@ -26,15 +20,23 @@ export interface TuiOAuthResult {
26
20
  name?: string | undefined;
27
21
  } | undefined;
28
22
  }
29
- export interface TuiOAuthLoginSession {
30
- authUrl: string;
31
- result: Promise<TuiOAuthResult>;
23
+ export interface TuiDeviceLoginPrompt {
24
+ userCode: string;
25
+ verificationUrl: string;
26
+ verificationUrlComplete: string | null;
27
+ expiresIn: number;
32
28
  }
33
29
  export type TuiDextoApiKeyProvisionStatusLevel = 'info' | 'success' | 'warning' | 'error';
34
30
  export interface TuiDextoApiKeyProvisionStatus {
35
31
  level: TuiDextoApiKeyProvisionStatusLevel;
36
32
  message: string;
37
33
  }
34
+ export interface TuiPersistedLoginResult {
35
+ email?: string | undefined;
36
+ userId?: string | undefined;
37
+ keyId?: string | undefined;
38
+ hasDextoApiKey: boolean;
39
+ }
38
40
  export interface TuiRuntimeServices {
39
41
  registerGracefulShutdown?: (getAgent: () => DextoAgent, options: {
40
42
  inkMode: boolean;
@@ -48,10 +50,13 @@ export interface TuiRuntimeServices {
48
50
  content: string;
49
51
  url?: string | undefined;
50
52
  } | null;
51
- beginOAuthLogin?: (config: TuiOAuthConfig, options?: {
53
+ performDeviceCodeLogin?: (options?: {
52
54
  signal?: AbortSignal | undefined;
53
- }) => Promise<TuiOAuthLoginSession>;
54
- defaultOAuthConfig?: TuiOAuthConfig;
55
+ onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
56
+ }) => Promise<TuiOAuthResult>;
57
+ persistOAuthLoginResult?: (result: TuiOAuthResult, options?: {
58
+ onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
59
+ }) => Promise<TuiPersistedLoginResult>;
55
60
  ensureDextoApiKeyForAuthToken?: (authToken: string, options?: {
56
61
  onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
57
62
  }) => Promise<{
@@ -84,10 +89,13 @@ export declare function getProviderInstructions(provider: LLMProvider): {
84
89
  content: string;
85
90
  url?: string | undefined;
86
91
  } | null;
87
- export declare function getDefaultOAuthConfig(): TuiOAuthConfig;
88
- export declare function beginOAuthLogin(config: TuiOAuthConfig, options?: {
92
+ export declare function performDeviceCodeLogin(options?: {
89
93
  signal?: AbortSignal | undefined;
90
- }): Promise<TuiOAuthLoginSession>;
94
+ onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
95
+ }): Promise<TuiOAuthResult>;
96
+ export declare function persistOAuthLoginResult(result: TuiOAuthResult, options?: {
97
+ onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
98
+ }): Promise<TuiPersistedLoginResult>;
91
99
  export declare function ensureDextoApiKeyForAuthToken(authToken: string, options?: {
92
100
  onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
93
101
  }): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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"}
@@ -28,18 +28,17 @@ function isValidApiKeyFormat(apiKey, provider) {
28
28
  function getProviderInstructions(provider) {
29
29
  return runtimeServices.getProviderInstructions?.(provider) ?? null;
30
30
  }
31
- function getDefaultOAuthConfig() {
32
- const config = runtimeServices.defaultOAuthConfig;
33
- if (!config) {
34
- throw missingHostMethod("defaultOAuthConfig");
31
+ async function performDeviceCodeLogin(options) {
32
+ if (!runtimeServices.performDeviceCodeLogin) {
33
+ throw missingHostMethod("performDeviceCodeLogin");
35
34
  }
36
- return config;
35
+ return runtimeServices.performDeviceCodeLogin(options);
37
36
  }
38
- async function beginOAuthLogin(config, options) {
39
- if (!runtimeServices.beginOAuthLogin) {
40
- throw missingHostMethod("beginOAuthLogin");
37
+ async function persistOAuthLoginResult(result, options) {
38
+ if (!runtimeServices.persistOAuthLoginResult) {
39
+ throw missingHostMethod("persistOAuthLoginResult");
41
40
  }
42
- return runtimeServices.beginOAuthLogin(config, options);
41
+ return runtimeServices.persistOAuthLoginResult(result, options);
43
42
  }
44
43
  async function ensureDextoApiKeyForAuthToken(authToken, options) {
45
44
  if (!runtimeServices.ensureDextoApiKeyForAuthToken) {
@@ -85,17 +84,17 @@ async function canUseDextoProvider() {
85
84
  }
86
85
  export {
87
86
  applyLayeredEnvironmentLoading,
88
- beginOAuthLogin,
89
87
  canUseDextoProvider,
90
88
  captureAnalytics,
91
89
  ensureDextoApiKeyForAuthToken,
92
- getDefaultOAuthConfig,
93
90
  getProviderDisplayName,
94
91
  getProviderInstructions,
95
92
  getTuiRuntimeServices,
96
93
  isUsingDextoCredits,
97
94
  isValidApiKeyFormat,
98
95
  loadAuth,
96
+ performDeviceCodeLogin,
97
+ persistOAuthLoginResult,
99
98
  registerGracefulShutdown,
100
99
  removeAuth,
101
100
  removeDextoApiKeyFromEnv,
package/dist/index.d.cts CHANGED
@@ -130,12 +130,6 @@ interface TuiAuthConfig {
130
130
  dextoKeyId?: string | undefined;
131
131
  dextoApiKeySource?: 'provisioned' | 'user-supplied' | undefined;
132
132
  }
133
- interface TuiOAuthConfig {
134
- authUrl: string;
135
- clientId: string;
136
- provider?: string;
137
- scopes?: string[];
138
- }
139
133
  interface TuiOAuthResult {
140
134
  accessToken: string;
141
135
  refreshToken?: string | undefined;
@@ -146,15 +140,23 @@ interface TuiOAuthResult {
146
140
  name?: string | undefined;
147
141
  } | undefined;
148
142
  }
149
- interface TuiOAuthLoginSession {
150
- authUrl: string;
151
- result: Promise<TuiOAuthResult>;
143
+ interface TuiDeviceLoginPrompt {
144
+ userCode: string;
145
+ verificationUrl: string;
146
+ verificationUrlComplete: string | null;
147
+ expiresIn: number;
152
148
  }
153
149
  type TuiDextoApiKeyProvisionStatusLevel = 'info' | 'success' | 'warning' | 'error';
154
150
  interface TuiDextoApiKeyProvisionStatus {
155
151
  level: TuiDextoApiKeyProvisionStatusLevel;
156
152
  message: string;
157
153
  }
154
+ interface TuiPersistedLoginResult {
155
+ email?: string | undefined;
156
+ userId?: string | undefined;
157
+ keyId?: string | undefined;
158
+ hasDextoApiKey: boolean;
159
+ }
158
160
  interface TuiRuntimeServices {
159
161
  registerGracefulShutdown?: (getAgent: () => DextoAgent, options: {
160
162
  inkMode: boolean;
@@ -168,10 +170,13 @@ interface TuiRuntimeServices {
168
170
  content: string;
169
171
  url?: string | undefined;
170
172
  } | null;
171
- beginOAuthLogin?: (config: TuiOAuthConfig, options?: {
173
+ performDeviceCodeLogin?: (options?: {
172
174
  signal?: AbortSignal | undefined;
173
- }) => Promise<TuiOAuthLoginSession>;
174
- defaultOAuthConfig?: TuiOAuthConfig;
175
+ onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
176
+ }) => Promise<TuiOAuthResult>;
177
+ persistOAuthLoginResult?: (result: TuiOAuthResult, options?: {
178
+ onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
179
+ }) => Promise<TuiPersistedLoginResult>;
175
180
  ensureDextoApiKeyForAuthToken?: (authToken: string, options?: {
176
181
  onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
177
182
  }) => Promise<{
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { CommandDefinition } from '../command-parser.js';
7
7
  /**
8
- * Login command - triggers OAuth flow for Dexto authentication
8
+ * Login command - triggers device-code login overlay for Dexto authentication
9
9
  * Only available when DEXTO_FEATURE_AUTH=true
10
10
  */
11
11
  export declare const loginCommand: CommandDefinition;
@@ -56,6 +56,8 @@ const baseCommands = [
56
56
  // /resume - opens session selector overlay
57
57
  import_session.renameCommand,
58
58
  // /rename <title> - rename current session
59
+ import_session.forkCommand,
60
+ // /fork - creates a forked session from current session
59
61
  import_export.exportCommand,
60
62
  // /export - opens export wizard overlay
61
63
  // Model management
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgBnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;AA6CpD;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgBnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;AA8CpD;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD"}
@@ -1,6 +1,6 @@
1
1
  import { isDextoAuthEnabled } from "@dexto/agent-management";
2
2
  import { generalCommands, createHelpCommand } from "./general-commands.js";
3
- import { searchCommand, resumeCommand, renameCommand } from "./session/index.js";
3
+ import { searchCommand, resumeCommand, renameCommand, forkCommand } from "./session/index.js";
4
4
  import { exportCommand } from "./export/index.js";
5
5
  import { modelCommands } from "./model/index.js";
6
6
  import { mcpCommands } from "./mcp/index.js";
@@ -21,6 +21,8 @@ const baseCommands = [
21
21
  // /resume - opens session selector overlay
22
22
  renameCommand,
23
23
  // /rename <title> - rename current session
24
+ forkCommand,
25
+ // /fork - creates a forked session from current session
24
26
  exportCommand,
25
27
  // /export - opens export wizard overlay
26
28
  // Model management
@@ -27,7 +27,7 @@ const modelCommands = {
27
27
  description: "Switch AI model (interactive selector)",
28
28
  usage: "/model",
29
29
  category: "General",
30
- aliases: ["m"],
30
+ aliases: ["m", "models"],
31
31
  handler: import_command_parser.overlayOnlyHandler
32
32
  };
33
33
  // Annotate the CommonJS export names for ESM import in node:
@@ -4,7 +4,7 @@ const modelCommands = {
4
4
  description: "Switch AI model (interactive selector)",
5
5
  usage: "/model",
6
6
  category: "General",
7
- aliases: ["m"],
7
+ aliases: ["m", "models"],
8
8
  handler: overlayOnlyHandler
9
9
  };
10
10
  export {
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var session_exports = {};
20
20
  __export(session_exports, {
21
+ forkCommand: () => import_session_commands.forkCommand,
21
22
  renameCommand: () => import_session_commands.renameCommand,
22
23
  resumeCommand: () => import_session_commands.resumeCommand,
23
24
  searchCommand: () => import_session_commands.searchCommand
@@ -26,6 +27,7 @@ module.exports = __toCommonJS(session_exports);
26
27
  var import_session_commands = require("./session-commands.js");
27
28
  // Annotate the CommonJS export names for ESM import in node:
28
29
  0 && (module.exports = {
30
+ forkCommand,
29
31
  renameCommand,
30
32
  resumeCommand,
31
33
  searchCommand
@@ -8,9 +8,10 @@
8
8
  * - searchCommand: Opens interactive search overlay
9
9
  * - resumeCommand: Shows interactive session selector
10
10
  * - renameCommand: Rename the current session
11
+ * - forkCommand: Fork the current session
11
12
  *
12
13
  * Note: For non-interactive session subcommands (list, history, delete),
13
14
  * see src/cli/commands/session-commands.ts
14
15
  */
15
- export { searchCommand, resumeCommand, renameCommand } from './session-commands.js';
16
+ export { searchCommand, resumeCommand, renameCommand, forkCommand } from './session-commands.js';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,5 +1,6 @@
1
- import { searchCommand, resumeCommand, renameCommand } from "./session-commands.js";
1
+ import { searchCommand, resumeCommand, renameCommand, forkCommand } from "./session-commands.js";
2
2
  export {
3
+ forkCommand,
3
4
  renameCommand,
4
5
  resumeCommand,
5
6
  searchCommand