@dexto/tui 1.7.2 → 1.8.1

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 (122) hide show
  1. package/dist/agent-backend.cjs +16 -2
  2. package/dist/agent-backend.d.ts +5 -2
  3. package/dist/agent-backend.d.ts.map +1 -1
  4. package/dist/agent-backend.js +15 -2
  5. package/dist/agent-backend.test.cjs +28 -2
  6. package/dist/agent-backend.test.js +28 -2
  7. package/dist/components/ApprovalPrompt.cjs +6 -5
  8. package/dist/components/ApprovalPrompt.d.ts +1 -1
  9. package/dist/components/ApprovalPrompt.d.ts.map +1 -1
  10. package/dist/components/ApprovalPrompt.js +6 -5
  11. package/dist/components/Footer.cjs +3 -2
  12. package/dist/components/Footer.d.ts.map +1 -1
  13. package/dist/components/Footer.js +2 -5
  14. package/dist/components/TextBufferInput.cjs +14 -1
  15. package/dist/components/TextBufferInput.d.ts +5 -1
  16. package/dist/components/TextBufferInput.d.ts.map +1 -1
  17. package/dist/components/TextBufferInput.js +14 -1
  18. package/dist/components/chat/QueuedMessagesDisplay.cjs +17 -8
  19. package/dist/components/chat/QueuedMessagesDisplay.d.ts +7 -1
  20. package/dist/components/chat/QueuedMessagesDisplay.d.ts.map +1 -1
  21. package/dist/components/chat/QueuedMessagesDisplay.js +16 -8
  22. package/dist/components/input/InputArea.cjs +4 -0
  23. package/dist/components/input/InputArea.d.ts +5 -1
  24. package/dist/components/input/InputArea.d.ts.map +1 -1
  25. package/dist/components/input/InputArea.js +4 -0
  26. package/dist/components/modes/AlternateBufferCLI.cjs +20 -1
  27. package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  28. package/dist/components/modes/AlternateBufferCLI.js +21 -2
  29. package/dist/components/modes/StaticCLI.cjs +20 -1
  30. package/dist/components/modes/StaticCLI.d.ts.map +1 -1
  31. package/dist/components/modes/StaticCLI.js +21 -2
  32. package/dist/components/overlays/ApiKeyInput.d.ts +1 -1
  33. package/dist/components/overlays/ApiKeyInput.d.ts.map +1 -1
  34. package/dist/components/overlays/CustomModelWizard.d.ts.map +1 -1
  35. package/dist/components/overlays/LoginOverlay.cjs +2 -10
  36. package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
  37. package/dist/components/overlays/LoginOverlay.js +3 -11
  38. package/dist/components/overlays/ModelSelectorRefactored.cjs +4 -3
  39. package/dist/components/overlays/ModelSelectorRefactored.d.ts +1 -1
  40. package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  41. package/dist/components/overlays/ModelSelectorRefactored.js +1 -2
  42. package/dist/components/overlays/ReasoningOverlay.cjs +3 -3
  43. package/dist/components/overlays/ReasoningOverlay.js +1 -1
  44. package/dist/components/overlays/custom-model-wizard/provider-config.cjs +4 -3
  45. package/dist/components/overlays/custom-model-wizard/provider-config.d.ts.map +1 -1
  46. package/dist/components/overlays/custom-model-wizard/provider-config.js +2 -4
  47. package/dist/containers/InputContainer.cjs +121 -20
  48. package/dist/containers/InputContainer.d.ts +6 -2
  49. package/dist/containers/InputContainer.d.ts.map +1 -1
  50. package/dist/containers/InputContainer.js +120 -19
  51. package/dist/containers/OverlayContainer.cjs +6 -5
  52. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  53. package/dist/containers/OverlayContainer.js +2 -7
  54. package/dist/hooks/useAgentEvents.cjs +29 -6
  55. package/dist/hooks/useAgentEvents.d.ts +3 -2
  56. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  57. package/dist/hooks/useAgentEvents.js +29 -9
  58. package/dist/hooks/useCLIState.cjs +12 -5
  59. package/dist/hooks/useCLIState.d.ts +2 -0
  60. package/dist/hooks/useCLIState.d.ts.map +1 -1
  61. package/dist/hooks/useCLIState.js +12 -5
  62. package/dist/hooks/useInputOrchestrator.cjs +15 -14
  63. package/dist/hooks/useInputOrchestrator.d.ts +6 -6
  64. package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
  65. package/dist/hooks/useInputOrchestrator.js +15 -14
  66. package/dist/host/index.cjs +6 -6
  67. package/dist/host/index.d.ts +9 -18
  68. package/dist/host/index.d.ts.map +1 -1
  69. package/dist/host/index.js +5 -5
  70. package/dist/host/index.test.cjs +47 -0
  71. package/dist/host/index.test.d.ts +2 -0
  72. package/dist/host/index.test.d.ts.map +1 -0
  73. package/dist/host/index.test.js +50 -0
  74. package/dist/index.d.cts +11 -15
  75. package/dist/interactive-commands/command-parser.cjs +1 -0
  76. package/dist/interactive-commands/command-parser.d.ts.map +1 -1
  77. package/dist/interactive-commands/command-parser.js +1 -0
  78. package/dist/interactive-commands/commands.cjs +3 -0
  79. package/dist/interactive-commands/commands.d.ts.map +1 -1
  80. package/dist/interactive-commands/commands.js +3 -0
  81. package/dist/interactive-commands/commands.test.cjs +42 -0
  82. package/dist/interactive-commands/commands.test.js +42 -0
  83. package/dist/interactive-commands/prompt-commands.cjs +4 -66
  84. package/dist/interactive-commands/prompt-commands.d.ts +1 -2
  85. package/dist/interactive-commands/prompt-commands.d.ts.map +1 -1
  86. package/dist/interactive-commands/prompt-commands.js +4 -66
  87. package/dist/interactive-commands/skill-commands.cjs +73 -0
  88. package/dist/interactive-commands/skill-commands.d.ts +9 -0
  89. package/dist/interactive-commands/skill-commands.d.ts.map +1 -0
  90. package/dist/interactive-commands/skill-commands.js +49 -0
  91. package/dist/services/processStream.cjs +23 -4
  92. package/dist/services/processStream.d.ts +3 -1
  93. package/dist/services/processStream.d.ts.map +1 -1
  94. package/dist/services/processStream.js +23 -4
  95. package/dist/services/processStream.test.cjs +52 -2
  96. package/dist/services/processStream.test.js +52 -2
  97. package/dist/state/initialState.cjs +2 -1
  98. package/dist/state/initialState.d.ts.map +1 -1
  99. package/dist/state/initialState.js +2 -1
  100. package/dist/state/reducer.cjs +10 -5
  101. package/dist/state/reducer.d.ts.map +1 -1
  102. package/dist/state/reducer.js +10 -5
  103. package/dist/state/types.d.ts +4 -1
  104. package/dist/state/types.d.ts.map +1 -1
  105. package/dist/utils/chatgpt-rate-limit.cjs +4 -4
  106. package/dist/utils/chatgpt-rate-limit.d.ts.map +1 -1
  107. package/dist/utils/chatgpt-rate-limit.js +1 -1
  108. package/dist/utils/llm-provider-display.d.ts +1 -1
  109. package/dist/utils/llm-provider-display.d.ts.map +1 -1
  110. package/dist/utils/messageFormatting.cjs +0 -23
  111. package/dist/utils/messageFormatting.d.ts +0 -13
  112. package/dist/utils/messageFormatting.d.ts.map +1 -1
  113. package/dist/utils/messageFormatting.js +0 -21
  114. package/dist/utils/queuedComposerContent.cjs +148 -0
  115. package/dist/utils/queuedComposerContent.d.ts +17 -0
  116. package/dist/utils/queuedComposerContent.d.ts.map +1 -0
  117. package/dist/utils/queuedComposerContent.js +123 -0
  118. package/dist/utils/queuedComposerContent.test.cjs +176 -0
  119. package/dist/utils/queuedComposerContent.test.d.ts +2 -0
  120. package/dist/utils/queuedComposerContent.test.d.ts.map +1 -0
  121. package/dist/utils/queuedComposerContent.test.js +175 -0
  122. package/package.json +5 -4
@@ -1,9 +1,11 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from "ink";
3
- function getMessageText(content) {
4
- const textParts = content.filter((part) => part.type === "text").map((part) => part.text);
5
- return textParts.join(" ") || "[attachment]";
6
- }
3
+ import { previewQueuedContent } from "../../utils/queuedComposerContent.js";
4
+ const isMac = process.platform === "darwin";
5
+ const QUEUE_EDIT_SHORTCUTS = {
6
+ currentTurn: isMac ? "\u2325 + \u2191 edit" : "Alt + \u2191 edit",
7
+ followUp: "\u2191 edit"
8
+ };
7
9
  function truncateText(text, maxLength = 60) {
8
10
  const singleLine = text.replace(/\n/g, " ").trim();
9
11
  if (singleLine.length <= maxLength) {
@@ -11,7 +13,11 @@ function truncateText(text, maxLength = 60) {
11
13
  }
12
14
  return singleLine.slice(0, maxLength - 3) + "...";
13
15
  }
14
- function QueuedMessagesDisplay({ messages }) {
16
+ function QueuedMessagesDisplay({
17
+ messages,
18
+ label = "queued",
19
+ hint = "\u2191 to edit"
20
+ }) {
15
21
  if (messages.length === 0) return null;
16
22
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
17
23
  /* @__PURE__ */ jsxs(Box, { children: [
@@ -19,17 +25,19 @@ function QueuedMessagesDisplay({ messages }) {
19
25
  messages.length,
20
26
  " message",
21
27
  messages.length !== 1 ? "s" : "",
22
- " queued"
28
+ " ",
29
+ label
23
30
  ] }),
24
31
  /* @__PURE__ */ jsx(Text, { color: "gray", children: " \u2022 " }),
25
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2191 to edit" })
32
+ /* @__PURE__ */ jsx(Text, { color: "gray", children: hint })
26
33
  ] }),
27
34
  messages.map((message, index) => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", children: [
28
35
  /* @__PURE__ */ jsx(Text, { color: "gray", children: index === messages.length - 1 ? "\u21B3 " : "\u2502 " }),
29
- /* @__PURE__ */ jsx(Text, { color: "gray", italic: true, children: truncateText(getMessageText(message.content)) })
36
+ /* @__PURE__ */ jsx(Text, { color: "gray", italic: true, children: truncateText(previewQueuedContent(message.content)) })
30
37
  ] }, message.id))
31
38
  ] });
32
39
  }
33
40
  export {
41
+ QUEUE_EDIT_SHORTCUTS,
34
42
  QueuedMessagesDisplay
35
43
  };
@@ -27,10 +27,12 @@ var import_TextBufferInput = require("../TextBufferInput.js");
27
27
  function InputArea({
28
28
  buffer,
29
29
  onSubmit,
30
+ onQueueSubmit,
30
31
  isDisabled,
31
32
  isActive,
32
33
  placeholder,
33
34
  onHistoryNavigate,
35
+ onCurrentTurnEdit,
34
36
  onTriggerOverlay,
35
37
  onKeyboardScroll,
36
38
  imageCount,
@@ -49,10 +51,12 @@ function InputArea({
49
51
  {
50
52
  buffer,
51
53
  onSubmit,
54
+ onQueueSubmit,
52
55
  placeholder,
53
56
  isDisabled,
54
57
  isActive,
55
58
  onHistoryNavigate,
59
+ onCurrentTurnEdit,
56
60
  onTriggerOverlay,
57
61
  onKeyboardScroll,
58
62
  imageCount,
@@ -11,6 +11,8 @@ interface InputAreaProps {
11
11
  buffer: TextBuffer;
12
12
  /** Called when user submits */
13
13
  onSubmit: (value: string) => void;
14
+ /** Called when user queues a follow-up while processing */
15
+ onQueueSubmit?: ((value: string) => void) | undefined;
14
16
  /** Whether input is currently disabled */
15
17
  isDisabled: boolean;
16
18
  /** Whether input should handle keypresses */
@@ -19,6 +21,8 @@ interface InputAreaProps {
19
21
  placeholder?: string | undefined;
20
22
  /** History navigation callback */
21
23
  onHistoryNavigate?: ((direction: 'up' | 'down') => void) | undefined;
24
+ /** Edit latest current-turn input callback */
25
+ onCurrentTurnEdit?: (() => boolean) | undefined;
22
26
  /** Overlay trigger callback */
23
27
  onTriggerOverlay?: ((trigger: OverlayTrigger) => void) | undefined;
24
28
  /** Keyboard scroll callback (for alternate buffer mode) */
@@ -44,5 +48,5 @@ interface InputAreaProps {
44
48
  /** Cycle reasoning variant (only when the main input is active). */
45
49
  onCycleReasoningVariant?: (() => void) | undefined;
46
50
  }
47
- export declare function InputArea({ buffer, onSubmit, isDisabled, isActive, placeholder, onHistoryNavigate, onTriggerOverlay, onKeyboardScroll, imageCount, onImagePaste, images, onImageRemove, pastedBlocks, onPasteBlock, onPasteBlockUpdate, onPasteBlockRemove, highlightQuery, onCycleReasoningVariant, }: InputAreaProps): import("react/jsx-runtime").JSX.Element;
51
+ export declare function InputArea({ buffer, onSubmit, onQueueSubmit, isDisabled, isActive, placeholder, onHistoryNavigate, onCurrentTurnEdit, onTriggerOverlay, onKeyboardScroll, imageCount, onImagePaste, images, onImageRemove, pastedBlocks, onPasteBlock, onPasteBlockUpdate, onPasteBlockRemove, highlightQuery, onCycleReasoningVariant, }: InputAreaProps): import("react/jsx-runtime").JSX.Element;
48
52
  //# sourceMappingURL=InputArea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputArea.d.ts","sourceRoot":"","sources":["../../../src/components/input/InputArea.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,UAAU,cAAc;IACpB,oCAAoC;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,0CAA0C;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrE,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpE,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,wDAAwD;IACxD,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5F,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD;AAED,wBAAgB,SAAS,CAAC,EACtB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GAC1B,EAAE,cAAc,2CAyBhB"}
1
+ {"version":3,"file":"InputArea.d.ts","sourceRoot":"","sources":["../../../src/components/input/InputArea.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,UAAU,cAAc;IACpB,oCAAoC;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,0CAA0C;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrE,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpE,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,wDAAwD;IACxD,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5F,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD;AAED,wBAAgB,SAAS,CAAC,EACtB,MAAM,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GAC1B,EAAE,cAAc,2CA2BhB"}
@@ -4,10 +4,12 @@ import { TextBufferInput } from "../TextBufferInput.js";
4
4
  function InputArea({
5
5
  buffer,
6
6
  onSubmit,
7
+ onQueueSubmit,
7
8
  isDisabled,
8
9
  isActive,
9
10
  placeholder,
10
11
  onHistoryNavigate,
12
+ onCurrentTurnEdit,
11
13
  onTriggerOverlay,
12
14
  onKeyboardScroll,
13
15
  imageCount,
@@ -26,10 +28,12 @@ function InputArea({
26
28
  {
27
29
  buffer,
28
30
  onSubmit,
31
+ onQueueSubmit,
29
32
  placeholder,
30
33
  isDisabled,
31
34
  isActive,
32
35
  onHistoryNavigate,
36
+ onCurrentTurnEdit,
33
37
  onTriggerOverlay,
34
38
  onKeyboardScroll,
35
39
  imageCount,
@@ -65,6 +65,8 @@ function AlternateBufferCLI({
65
65
  setPendingMessages,
66
66
  dequeuedBuffer,
67
67
  setDequeuedBuffer,
68
+ steerMessages,
69
+ setSteerMessages,
68
70
  queuedMessages,
69
71
  setQueuedMessages,
70
72
  todos,
@@ -275,7 +277,22 @@ function AlternateBufferCLI({
275
277
  }
276
278
  ),
277
279
  selectionHintVisible && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "yellowBright", children: "\u{1F4A1} Tip: Hold Option (\u2325) and click to select text, or press Ctrl+S to toggle copy mode" }) }),
278
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_QueuedMessagesDisplay.QueuedMessagesDisplay, { messages: queuedMessages })
280
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
281
+ import_QueuedMessagesDisplay.QueuedMessagesDisplay,
282
+ {
283
+ messages: steerMessages,
284
+ label: "current-turn input",
285
+ hint: import_QueuedMessagesDisplay.QUEUE_EDIT_SHORTCUTS.currentTurn
286
+ }
287
+ ),
288
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
289
+ import_QueuedMessagesDisplay.QueuedMessagesDisplay,
290
+ {
291
+ messages: queuedMessages,
292
+ label: "queued follow-up",
293
+ hint: import_QueuedMessagesDisplay.QUEUE_EDIT_SHORTCUTS.followUp
294
+ }
295
+ )
279
296
  ] }),
280
297
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
281
298
  import_InputContainer.InputContainer,
@@ -287,6 +304,7 @@ function AlternateBufferCLI({
287
304
  session,
288
305
  initialPrompt,
289
306
  approval,
307
+ steerMessages,
290
308
  queuedMessages,
291
309
  setInput,
292
310
  setUi,
@@ -294,6 +312,7 @@ function AlternateBufferCLI({
294
312
  setMessages,
295
313
  setPendingMessages,
296
314
  setDequeuedBuffer,
315
+ setSteerMessages,
297
316
  setQueuedMessages,
298
317
  setApproval,
299
318
  setApprovalQueue,
@@ -1 +1 @@
1
- {"version":3,"file":"AlternateBufferCLI.d.ts","sourceRoot":"","sources":["../../../src/components/modes/AlternateBufferCLI.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA+BjE,UAAU,uBAAuB;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,wBAAgC,EAChC,kBAAkB,EAClB,YAAmB,GACtB,EAAE,uBAAuB,2CAkXzB"}
1
+ {"version":3,"file":"AlternateBufferCLI.d.ts","sourceRoot":"","sources":["../../../src/components/modes/AlternateBufferCLI.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA+BjE,UAAU,uBAAuB;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,wBAAgC,EAChC,kBAAkB,EAClB,YAAmB,GACtB,EAAE,uBAAuB,2CA+XzB"}
@@ -7,7 +7,7 @@ import { useGitBranch } from "../../hooks/useGitBranch.js";
7
7
  import { useScrollable } from "../../contexts/index.js";
8
8
  import { Header } from "../chat/Header.js";
9
9
  import { MessageItem } from "../chat/MessageItem.js";
10
- import { QueuedMessagesDisplay } from "../chat/QueuedMessagesDisplay.js";
10
+ import { QUEUE_EDIT_SHORTCUTS, QueuedMessagesDisplay } from "../chat/QueuedMessagesDisplay.js";
11
11
  import { StatusBar } from "../StatusBar.js";
12
12
  import { HistorySearchBar } from "../HistorySearchBar.js";
13
13
  import { Footer } from "../Footer.js";
@@ -45,6 +45,8 @@ function AlternateBufferCLI({
45
45
  setPendingMessages,
46
46
  dequeuedBuffer,
47
47
  setDequeuedBuffer,
48
+ steerMessages,
49
+ setSteerMessages,
48
50
  queuedMessages,
49
51
  setQueuedMessages,
50
52
  todos,
@@ -255,7 +257,22 @@ function AlternateBufferCLI({
255
257
  }
256
258
  ),
257
259
  selectionHintVisible && /* @__PURE__ */ jsx(Box, { paddingX: 1, children: /* @__PURE__ */ jsx(Text, { color: "yellowBright", children: "\u{1F4A1} Tip: Hold Option (\u2325) and click to select text, or press Ctrl+S to toggle copy mode" }) }),
258
- /* @__PURE__ */ jsx(QueuedMessagesDisplay, { messages: queuedMessages })
260
+ /* @__PURE__ */ jsx(
261
+ QueuedMessagesDisplay,
262
+ {
263
+ messages: steerMessages,
264
+ label: "current-turn input",
265
+ hint: QUEUE_EDIT_SHORTCUTS.currentTurn
266
+ }
267
+ ),
268
+ /* @__PURE__ */ jsx(
269
+ QueuedMessagesDisplay,
270
+ {
271
+ messages: queuedMessages,
272
+ label: "queued follow-up",
273
+ hint: QUEUE_EDIT_SHORTCUTS.followUp
274
+ }
275
+ )
259
276
  ] }),
260
277
  /* @__PURE__ */ jsx(
261
278
  InputContainer,
@@ -267,6 +284,7 @@ function AlternateBufferCLI({
267
284
  session,
268
285
  initialPrompt,
269
286
  approval,
287
+ steerMessages,
270
288
  queuedMessages,
271
289
  setInput,
272
290
  setUi,
@@ -274,6 +292,7 @@ function AlternateBufferCLI({
274
292
  setMessages,
275
293
  setPendingMessages,
276
294
  setDequeuedBuffer,
295
+ setSteerMessages,
277
296
  setQueuedMessages,
278
297
  setApproval,
279
298
  setApprovalQueue,
@@ -55,6 +55,8 @@ function StaticCLI({
55
55
  setPendingMessages,
56
56
  dequeuedBuffer,
57
57
  setDequeuedBuffer,
58
+ steerMessages,
59
+ setSteerMessages,
58
60
  queuedMessages,
59
61
  setQueuedMessages,
60
62
  todos,
@@ -217,7 +219,22 @@ function StaticCLI({
217
219
  isProcessing: ui.isProcessing
218
220
  }
219
221
  ),
220
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_QueuedMessagesDisplay.QueuedMessagesDisplay, { messages: queuedMessages })
222
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
223
+ import_QueuedMessagesDisplay.QueuedMessagesDisplay,
224
+ {
225
+ messages: steerMessages,
226
+ label: "current-turn input",
227
+ hint: import_QueuedMessagesDisplay.QUEUE_EDIT_SHORTCUTS.currentTurn
228
+ }
229
+ ),
230
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
231
+ import_QueuedMessagesDisplay.QueuedMessagesDisplay,
232
+ {
233
+ messages: queuedMessages,
234
+ label: "queued follow-up",
235
+ hint: import_QueuedMessagesDisplay.QUEUE_EDIT_SHORTCUTS.followUp
236
+ }
237
+ )
221
238
  ] });
222
239
  })(),
223
240
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -230,6 +247,7 @@ function StaticCLI({
230
247
  session,
231
248
  initialPrompt,
232
249
  approval,
250
+ steerMessages,
233
251
  queuedMessages,
234
252
  setInput,
235
253
  setUi,
@@ -237,6 +255,7 @@ function StaticCLI({
237
255
  setMessages,
238
256
  setPendingMessages,
239
257
  setDequeuedBuffer,
258
+ setSteerMessages,
240
259
  setQueuedMessages,
241
260
  setApproval,
242
261
  setApprovalQueue,
@@ -1 +1 @@
1
- {"version":3,"file":"StaticCLI.d.ts","sourceRoot":"","sources":["../../../src/components/modes/StaticCLI.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAsBxD,UAAU,cAAc;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,wBAAgC,EAChC,YAAmB,GACtB,EAAE,cAAc,2CA4RhB"}
1
+ {"version":3,"file":"StaticCLI.d.ts","sourceRoot":"","sources":["../../../src/components/modes/StaticCLI.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAsBxD,UAAU,cAAc;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,wBAAgC,EAChC,YAAmB,GACtB,EAAE,cAAc,2CAyShB"}
@@ -7,7 +7,7 @@ import { useTerminalSize } from "../../hooks/useTerminalSize.js";
7
7
  import { useGitBranch } from "../../hooks/useGitBranch.js";
8
8
  import { Header } from "../chat/Header.js";
9
9
  import { MessageItem } from "../chat/MessageItem.js";
10
- import { QueuedMessagesDisplay } from "../chat/QueuedMessagesDisplay.js";
10
+ import { QUEUE_EDIT_SHORTCUTS, QueuedMessagesDisplay } from "../chat/QueuedMessagesDisplay.js";
11
11
  import { StatusBar } from "../StatusBar.js";
12
12
  import { HistorySearchBar } from "../HistorySearchBar.js";
13
13
  import { Footer } from "../Footer.js";
@@ -32,6 +32,8 @@ function StaticCLI({
32
32
  setPendingMessages,
33
33
  dequeuedBuffer,
34
34
  setDequeuedBuffer,
35
+ steerMessages,
36
+ setSteerMessages,
35
37
  queuedMessages,
36
38
  setQueuedMessages,
37
39
  todos,
@@ -194,7 +196,22 @@ function StaticCLI({
194
196
  isProcessing: ui.isProcessing
195
197
  }
196
198
  ),
197
- /* @__PURE__ */ jsx(QueuedMessagesDisplay, { messages: queuedMessages })
199
+ /* @__PURE__ */ jsx(
200
+ QueuedMessagesDisplay,
201
+ {
202
+ messages: steerMessages,
203
+ label: "current-turn input",
204
+ hint: QUEUE_EDIT_SHORTCUTS.currentTurn
205
+ }
206
+ ),
207
+ /* @__PURE__ */ jsx(
208
+ QueuedMessagesDisplay,
209
+ {
210
+ messages: queuedMessages,
211
+ label: "queued follow-up",
212
+ hint: QUEUE_EDIT_SHORTCUTS.followUp
213
+ }
214
+ )
198
215
  ] });
199
216
  })(),
200
217
  /* @__PURE__ */ jsx(
@@ -207,6 +224,7 @@ function StaticCLI({
207
224
  session,
208
225
  initialPrompt,
209
226
  approval,
227
+ steerMessages,
210
228
  queuedMessages,
211
229
  setInput,
212
230
  setUi,
@@ -214,6 +232,7 @@ function StaticCLI({
214
232
  setMessages,
215
233
  setPendingMessages,
216
234
  setDequeuedBuffer,
235
+ setSteerMessages,
217
236
  setQueuedMessages,
218
237
  setApproval,
219
238
  setApprovalQueue,
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import React from 'react';
6
6
  import type { Key } from '../../hooks/useInputOrchestrator.js';
7
- import type { LLMProvider } from '@dexto/core';
7
+ import type { LLMProvider } from '@dexto/llm';
8
8
  export interface ApiKeyInputProps {
9
9
  isVisible: boolean;
10
10
  provider: LLMProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKeyInput.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/ApiKeyInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA4E,MAAM,OAAO,CAAC;AAEjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,4FA+Jf,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ApiKeyInput.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/ApiKeyInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA4E,MAAM,OAAO,CAAC;AAEjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,4FA+Jf,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomModelWizard.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/CustomModelWizard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAGH,KAAK,WAAW,EAMnB,MAAM,yBAAyB,CAAC;AAoBjC,UAAU,sBAAsB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;;GAGG;AACH,QAAA,MAAM,iBAAiB,wGA4YtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"CustomModelWizard.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/CustomModelWizard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAGH,KAAK,WAAW,EAMnB,MAAM,yBAAyB,CAAC;AAqBjC,UAAU,sBAAsB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;;GAGG;AACH,QAAA,MAAM,iBAAiB,wGA4YtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -38,12 +38,6 @@ const LoginOverlay = (0, import_react.forwardRef)(function LoginOverlay2({ isVis
38
38
  if (!isActiveRef.current) return;
39
39
  setStatus(message);
40
40
  }, []);
41
- const handleProvisionStatus = (0, import_react.useCallback)(
42
- (provisionStatus) => {
43
- safeSetStatus(provisionStatus.message);
44
- },
45
- [safeSetStatus]
46
- );
47
41
  const cancelInFlight = (0, import_react.useCallback)(() => {
48
42
  abortControllerRef.current?.abort(new Error("Authentication cancelled"));
49
43
  abortControllerRef.current = null;
@@ -81,9 +75,7 @@ const LoginOverlay = (0, import_react.forwardRef)(function LoginOverlay2({ isVis
81
75
  if (!result || !isActiveRef.current || abortController.signal.aborted) return;
82
76
  setStep("finalizing");
83
77
  safeSetStatus("Finalizing login...");
84
- const persisted = await (0, import_host.persistOAuthLoginResult)(result, {
85
- onProvisionStatus: handleProvisionStatus
86
- });
78
+ const persisted = await (0, import_host.persistDeviceApiKeyLoginResult)(result);
87
79
  if (!isActiveRef.current || abortController.signal.aborted) return;
88
80
  onDone({
89
81
  outcome: "success",
@@ -102,7 +94,7 @@ const LoginOverlay = (0, import_react.forwardRef)(function LoginOverlay2({ isVis
102
94
  } finally {
103
95
  abortControllerRef.current = null;
104
96
  }
105
- }, [cancelInFlight, handleProvisionStatus, onDone, runDeviceLogin, safeSetStatus]);
97
+ }, [cancelInFlight, onDone, runDeviceLogin, safeSetStatus]);
106
98
  (0, import_react.useEffect)(() => {
107
99
  if (!isVisible) return;
108
100
  isActiveRef.current = true;
@@ -1 +1 @@
1
- {"version":3,"file":"LoginOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/LoginOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAU/D,MAAM,MAAM,mBAAmB,GACzB;IACI,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;CAC3B,GACD;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GACxB;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAUD,QAAA,MAAM,YAAY,8FAmOhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"LoginOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/LoginOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAS/D,MAAM,MAAM,mBAAmB,GACzB;IACI,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;CAC3B,GACD;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GACxB;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAUD,QAAA,MAAM,YAAY,8FA0NhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -11,7 +11,7 @@ import { Box, Text } from "ink";
11
11
  import {
12
12
  loadAuth,
13
13
  performDeviceCodeLogin,
14
- persistOAuthLoginResult
14
+ persistDeviceApiKeyLoginResult
15
15
  } from "../../host/index.js";
16
16
  const LoginOverlay = forwardRef(function LoginOverlay2({ isVisible, onDone }, ref) {
17
17
  const [step, setStep] = useState("checking");
@@ -26,12 +26,6 @@ const LoginOverlay = forwardRef(function LoginOverlay2({ isVisible, onDone }, re
26
26
  if (!isActiveRef.current) return;
27
27
  setStatus(message);
28
28
  }, []);
29
- const handleProvisionStatus = useCallback(
30
- (provisionStatus) => {
31
- safeSetStatus(provisionStatus.message);
32
- },
33
- [safeSetStatus]
34
- );
35
29
  const cancelInFlight = useCallback(() => {
36
30
  abortControllerRef.current?.abort(new Error("Authentication cancelled"));
37
31
  abortControllerRef.current = null;
@@ -69,9 +63,7 @@ const LoginOverlay = forwardRef(function LoginOverlay2({ isVisible, onDone }, re
69
63
  if (!result || !isActiveRef.current || abortController.signal.aborted) return;
70
64
  setStep("finalizing");
71
65
  safeSetStatus("Finalizing login...");
72
- const persisted = await persistOAuthLoginResult(result, {
73
- onProvisionStatus: handleProvisionStatus
74
- });
66
+ const persisted = await persistDeviceApiKeyLoginResult(result);
75
67
  if (!isActiveRef.current || abortController.signal.aborted) return;
76
68
  onDone({
77
69
  outcome: "success",
@@ -90,7 +82,7 @@ const LoginOverlay = forwardRef(function LoginOverlay2({ isVisible, onDone }, re
90
82
  } finally {
91
83
  abortControllerRef.current = null;
92
84
  }
93
- }, [cancelInFlight, handleProvisionStatus, onDone, runDeviceLogin, safeSetStatus]);
85
+ }, [cancelInFlight, onDone, runDeviceLogin, safeSetStatus]);
94
86
  useEffect(() => {
95
87
  if (!isVisible) return;
96
88
  isActiveRef.current = true;
@@ -25,6 +25,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_react = require("react");
26
26
  var import_ink = require("ink");
27
27
  var import_useTerminalSize = require("../../hooks/useTerminalSize.js");
28
+ var import_llm = require("@dexto/llm");
28
29
  var import_core = require("@dexto/core");
29
30
  var import_agent_management = require("@dexto/agent-management");
30
31
  var import_llm_provider_display = require("../../utils/llm-provider-display.js");
@@ -368,7 +369,7 @@ const ModelSelector = (0, import_react.forwardRef)(function ModelSelector2({
368
369
  const [refreshVersion, setRefreshVersion] = (0, import_react.useState)(0);
369
370
  const reasoningVariantOptions = (0, import_react.useMemo)(() => {
370
371
  if (!pendingReasoningModel) return [];
371
- const support = (0, import_core.getReasoningProfile)(
372
+ const support = (0, import_llm.getReasoningProfile)(
372
373
  pendingReasoningModel.provider,
373
374
  pendingReasoningModel.name
374
375
  );
@@ -584,7 +585,7 @@ const ModelSelector = (0, import_react.forwardRef)(function ModelSelector2({
584
585
  const releaseDate = resolveReleaseDate("openai", configured.model) ?? resolveReleaseDate("openrouter", configured.model);
585
586
  addChatGPTCodexModel({
586
587
  model: configured.model,
587
- displayName: (0, import_core.getModelDisplayName)(configured.model, "openai"),
588
+ displayName: (0, import_llm.getModelDisplayName)(configured.model, "openai"),
588
589
  isDefault: defaultConfig ? matchesConfiguredModel(
589
590
  {
590
591
  provider: "openai-compatible",
@@ -897,7 +898,7 @@ const ModelSelector = (0, import_react.forwardRef)(function ModelSelector2({
897
898
  }
898
899
  };
899
900
  const beginReasoningVariantSelection = (item, settingDefault) => {
900
- const support = (0, import_core.getReasoningProfile)(item.provider, item.name);
901
+ const support = (0, import_llm.getReasoningProfile)(item.provider, item.name);
901
902
  if (!support.capable) {
902
903
  return false;
903
904
  }
@@ -5,7 +5,7 @@
5
5
  * - Custom models support (add/edit/delete via arrow navigation)
6
6
  */
7
7
  import type { Key } from '../../hooks/useInputOrchestrator.js';
8
- import type { LLMProvider, ReasoningVariant } from '@dexto/core';
8
+ import type { LLMProvider, ReasoningVariant } from '@dexto/llm';
9
9
  import { type CustomModel } from '@dexto/agent-management';
10
10
  import type { TuiAgentBackend } from '../../agent-backend.js';
11
11
  interface ModelSelectorProps {
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/ModelSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,EAAkB,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAcjF,OAAO,EASH,KAAK,WAAW,EAEnB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2S9D,UAAU,kBAAkB;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CACX,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,IAAI,CAAC;IACV,iBAAiB,EAAE,CACf,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAgJD;;GAEG;AACH,QAAA,MAAM,aAAa,oHAy2CjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ModelSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/ModelSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAahE,OAAO,EASH,KAAK,WAAW,EAEnB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2S9D,UAAU,kBAAkB;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CACX,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,IAAI,CAAC;IACV,iBAAiB,EAAE,CACf,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAgJD;;GAEG;AACH,QAAA,MAAM,aAAa,oHAy2CjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -10,6 +10,7 @@ import {
10
10
  } from "react";
11
11
  import { Box, Text } from "ink";
12
12
  import { useTerminalSize } from "../../hooks/useTerminalSize.js";
13
+ import { getModelDisplayName, getReasoningProfile } from "@dexto/llm";
13
14
  import {
14
15
  CodexAppServerClient,
15
16
  createCodexBaseURL,
@@ -17,9 +18,7 @@ import {
17
18
  DEFAULT_OLLAMA_URL,
18
19
  getLocalModelById,
19
20
  getCuratedModelRefsForProviders,
20
- getModelDisplayName,
21
21
  getOpenRouterModelCacheInfo,
22
- getReasoningProfile,
23
22
  parseCodexBaseURL,
24
23
  refreshOpenRouterModelCache
25
24
  } from "@dexto/core";
@@ -34,7 +34,7 @@ module.exports = __toCommonJS(ReasoningOverlay_exports);
34
34
  var import_jsx_runtime = require("react/jsx-runtime");
35
35
  var import_react = __toESM(require("react"), 1);
36
36
  var import_ink = require("ink");
37
- var import_core = require("@dexto/core");
37
+ var import_llm = require("@dexto/llm");
38
38
  var import_llm_provider_display = require("../../utils/llm-provider-display.js");
39
39
  const ReasoningOverlay = import_react.default.forwardRef(
40
40
  function ReasoningOverlay2({
@@ -55,7 +55,7 @@ const ReasoningOverlay = import_react.default.forwardRef(
55
55
  const llmConfig = agent.getCurrentLLMConfig(sessionId || void 0);
56
56
  const provider = llmConfig.provider;
57
57
  const model = llmConfig.model;
58
- const support = (0, import_core.getReasoningProfile)(provider, model);
58
+ const support = (0, import_llm.getReasoningProfile)(provider, model);
59
59
  const currentVariant = llmConfig.reasoning?.variant ?? support.defaultVariant ?? "default";
60
60
  const currentBudgetTokens = llmConfig.reasoning?.budgetTokens;
61
61
  const menuItems = (0, import_react.useMemo)(() => {
@@ -216,7 +216,7 @@ const ReasoningOverlay = import_react.default.forwardRef(
216
216
  );
217
217
  if (!isVisible) return null;
218
218
  const providerLabel = (0, import_llm_provider_display.getLLMProviderDisplayName)(provider, llmConfig.baseURL);
219
- const modelLabel = (0, import_core.getModelDisplayName)(model);
219
+ const modelLabel = (0, import_llm.getModelDisplayName)(model);
220
220
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
221
221
  import_ink.Box,
222
222
  {
@@ -8,7 +8,7 @@ import React, {
8
8
  useState
9
9
  } from "react";
10
10
  import { Box, Text } from "ink";
11
- import { getModelDisplayName, getReasoningProfile } from "@dexto/core";
11
+ import { getModelDisplayName, getReasoningProfile } from "@dexto/llm";
12
12
  import { getLLMProviderDisplayName } from "../../utils/llm-provider-display.js";
13
13
  const ReasoningOverlay = React.forwardRef(
14
14
  function ReasoningOverlay2({
@@ -38,6 +38,7 @@ __export(provider_config_exports, {
38
38
  });
39
39
  module.exports = __toCommonJS(provider_config_exports);
40
40
  var import_agent_management = require("@dexto/agent-management");
41
+ var import_llm = require("@dexto/llm");
41
42
  var import_core = require("@dexto/core");
42
43
  var import_types = require("./types.js");
43
44
  var fs = __toESM(require("fs"), 1);
@@ -69,7 +70,7 @@ const REASONING_PRESET_STEP = {
69
70
  required: false,
70
71
  condition: (values) => {
71
72
  const modelName = values.name || "";
72
- return (0, import_core.isReasoningCapableModel)(modelName);
73
+ return (0, import_llm.isReasoningCapableModel)(modelName);
73
74
  }
74
75
  };
75
76
  function parseReasoningVariant(value) {
@@ -79,9 +80,9 @@ function parseReasoningVariant(value) {
79
80
  function resolveReasoningOverride(provider, modelName, rawVariant) {
80
81
  const variant = parseReasoningVariant(rawVariant);
81
82
  if (!variant) return void 0;
82
- const profile = (0, import_core.getReasoningProfile)(provider, modelName);
83
+ const profile = (0, import_llm.getReasoningProfile)(provider, modelName);
83
84
  if (!profile.capable) return void 0;
84
- if (!(0, import_core.supportsReasoningVariant)(profile, variant)) return void 0;
85
+ if (!(0, import_llm.supportsReasoningVariant)(profile, variant)) return void 0;
85
86
  if (variant === profile.defaultVariant) return void 0;
86
87
  return { variant };
87
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../../src/components/overlays/custom-model-wizard/provider-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAWhF,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAyE7D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,CA2cxE,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc,CAE/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,mBAAmB,EAAE,CAW7D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAIrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB"}
1
+ {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../../src/components/overlays/custom-model-wizard/provider-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAShF,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAyE7D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,CA2cxE,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc,CAE/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,mBAAmB,EAAE,CAW7D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAIrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB"}
@@ -1,12 +1,10 @@
1
1
  import { CUSTOM_MODEL_PROVIDERS, isDextoAuthEnabled } from "@dexto/agent-management";
2
2
  import {
3
- lookupOpenRouterModel,
4
- refreshOpenRouterModelCache,
5
- getLocalModelById,
6
3
  isReasoningCapableModel,
7
4
  getReasoningProfile,
8
5
  supportsReasoningVariant
9
- } from "@dexto/core";
6
+ } from "@dexto/llm";
7
+ import { lookupOpenRouterModel, refreshOpenRouterModelCache, getLocalModelById } from "@dexto/core";
10
8
  import { validators } from "./types.js";
11
9
  import * as fs from "fs";
12
10
  import * as os from "os";