@dexto/tui 1.7.1 → 1.8.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.
Files changed (99) 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/TextBufferInput.cjs +14 -1
  12. package/dist/components/TextBufferInput.d.ts +5 -1
  13. package/dist/components/TextBufferInput.d.ts.map +1 -1
  14. package/dist/components/TextBufferInput.js +14 -1
  15. package/dist/components/chat/QueuedMessagesDisplay.cjs +17 -8
  16. package/dist/components/chat/QueuedMessagesDisplay.d.ts +7 -1
  17. package/dist/components/chat/QueuedMessagesDisplay.d.ts.map +1 -1
  18. package/dist/components/chat/QueuedMessagesDisplay.js +16 -8
  19. package/dist/components/input/InputArea.cjs +4 -0
  20. package/dist/components/input/InputArea.d.ts +5 -1
  21. package/dist/components/input/InputArea.d.ts.map +1 -1
  22. package/dist/components/input/InputArea.js +4 -0
  23. package/dist/components/modes/AlternateBufferCLI.cjs +20 -1
  24. package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  25. package/dist/components/modes/AlternateBufferCLI.js +21 -2
  26. package/dist/components/modes/StaticCLI.cjs +20 -1
  27. package/dist/components/modes/StaticCLI.d.ts.map +1 -1
  28. package/dist/components/modes/StaticCLI.js +21 -2
  29. package/dist/components/overlays/LoginOverlay.cjs +2 -10
  30. package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
  31. package/dist/components/overlays/LoginOverlay.js +3 -11
  32. package/dist/containers/InputContainer.cjs +119 -18
  33. package/dist/containers/InputContainer.d.ts +6 -2
  34. package/dist/containers/InputContainer.d.ts.map +1 -1
  35. package/dist/containers/InputContainer.js +119 -18
  36. package/dist/hooks/useAgentEvents.cjs +27 -5
  37. package/dist/hooks/useAgentEvents.d.ts +3 -2
  38. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  39. package/dist/hooks/useAgentEvents.js +27 -5
  40. package/dist/hooks/useCLIState.cjs +10 -4
  41. package/dist/hooks/useCLIState.d.ts +2 -0
  42. package/dist/hooks/useCLIState.d.ts.map +1 -1
  43. package/dist/hooks/useCLIState.js +10 -4
  44. package/dist/hooks/useInputOrchestrator.cjs +15 -14
  45. package/dist/hooks/useInputOrchestrator.d.ts +6 -6
  46. package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
  47. package/dist/hooks/useInputOrchestrator.js +15 -14
  48. package/dist/host/index.cjs +6 -6
  49. package/dist/host/index.d.ts +8 -17
  50. package/dist/host/index.d.ts.map +1 -1
  51. package/dist/host/index.js +5 -5
  52. package/dist/host/index.test.cjs +47 -0
  53. package/dist/host/index.test.d.ts +2 -0
  54. package/dist/host/index.test.d.ts.map +1 -0
  55. package/dist/host/index.test.js +50 -0
  56. package/dist/index.d.cts +10 -15
  57. package/dist/interactive-commands/command-parser.cjs +1 -0
  58. package/dist/interactive-commands/command-parser.d.ts.map +1 -1
  59. package/dist/interactive-commands/command-parser.js +1 -0
  60. package/dist/interactive-commands/commands.cjs +3 -0
  61. package/dist/interactive-commands/commands.d.ts.map +1 -1
  62. package/dist/interactive-commands/commands.js +3 -0
  63. package/dist/interactive-commands/commands.test.cjs +42 -0
  64. package/dist/interactive-commands/commands.test.js +42 -0
  65. package/dist/interactive-commands/prompt-commands.cjs +4 -66
  66. package/dist/interactive-commands/prompt-commands.d.ts +1 -2
  67. package/dist/interactive-commands/prompt-commands.d.ts.map +1 -1
  68. package/dist/interactive-commands/prompt-commands.js +4 -66
  69. package/dist/interactive-commands/skill-commands.cjs +73 -0
  70. package/dist/interactive-commands/skill-commands.d.ts +9 -0
  71. package/dist/interactive-commands/skill-commands.d.ts.map +1 -0
  72. package/dist/interactive-commands/skill-commands.js +49 -0
  73. package/dist/services/processStream.cjs +23 -4
  74. package/dist/services/processStream.d.ts +3 -1
  75. package/dist/services/processStream.d.ts.map +1 -1
  76. package/dist/services/processStream.js +23 -4
  77. package/dist/services/processStream.test.cjs +52 -2
  78. package/dist/services/processStream.test.js +52 -2
  79. package/dist/state/initialState.cjs +2 -1
  80. package/dist/state/initialState.d.ts.map +1 -1
  81. package/dist/state/initialState.js +2 -1
  82. package/dist/state/reducer.cjs +10 -5
  83. package/dist/state/reducer.d.ts.map +1 -1
  84. package/dist/state/reducer.js +10 -5
  85. package/dist/state/types.d.ts +2 -0
  86. package/dist/state/types.d.ts.map +1 -1
  87. package/dist/utils/messageFormatting.cjs +0 -23
  88. package/dist/utils/messageFormatting.d.ts +0 -13
  89. package/dist/utils/messageFormatting.d.ts.map +1 -1
  90. package/dist/utils/messageFormatting.js +0 -21
  91. package/dist/utils/queuedComposerContent.cjs +148 -0
  92. package/dist/utils/queuedComposerContent.d.ts +17 -0
  93. package/dist/utils/queuedComposerContent.d.ts.map +1 -0
  94. package/dist/utils/queuedComposerContent.js +123 -0
  95. package/dist/utils/queuedComposerContent.test.cjs +176 -0
  96. package/dist/utils/queuedComposerContent.test.d.ts +2 -0
  97. package/dist/utils/queuedComposerContent.test.d.ts.map +1 -0
  98. package/dist/utils/queuedComposerContent.test.js +175 -0
  99. package/package.json +4 -4
@@ -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,
@@ -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;