openpaean 0.7.14 → 0.7.15

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.
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * InputArea Component
3
3
  * User input with command handling using useStdin for raw input handling
4
- * Features: Tab completion, command suggestions, proper exit cleanup
4
+ * Features: Tab completion, command suggestions, proper exit cleanup,
5
+ * multi-line paste (bracketed paste mode + fast-return fallback)
5
6
  */
6
7
  import React from 'react';
7
8
  interface InputAreaProps {
@@ -1 +1 @@
1
- {"version":3,"file":"InputArea.d.ts","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,UAAU,cAAc;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAwI9C,CAAC"}
1
+ {"version":3,"file":"InputArea.d.ts","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAa3D,UAAU,cAAc;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAgN9C,CAAC"}
@@ -2,17 +2,42 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  /**
3
3
  * InputArea Component
4
4
  * User input with command handling using useStdin for raw input handling
5
- * Features: Tab completion, command suggestions, proper exit cleanup
5
+ * Features: Tab completion, command suggestions, proper exit cleanup,
6
+ * multi-line paste (bracketed paste mode + fast-return fallback)
6
7
  */
7
8
  import { useState, useEffect, useRef } from 'react';
8
9
  import { Box, Text, useStdin, useApp } from 'ink';
10
+ /**
11
+ * If Enter arrives within this window after the last insertable character,
12
+ * treat it as part of a paste (newline) rather than a submit.
13
+ * Fallback for terminals that don't support bracketed paste mode.
14
+ */
15
+ const FAST_RETURN_THRESHOLD_MS = 30;
16
+ const PASTE_START = '\x1b[200~';
17
+ const PASTE_END = '\x1b[201~';
9
18
  export const InputArea = ({ onSubmit, onInputChange, onTabComplete, suggestions = [], disabled = false }) => {
10
19
  const [value, setValue] = useState('');
11
20
  const { stdin, setRawMode } = useStdin();
12
21
  const { exit } = useApp();
13
22
  const rawModeRef = useRef(true);
23
+ const callbacksRef = useRef({ onSubmit, onInputChange, onTabComplete });
24
+ // Bracketed paste state
25
+ const pasteBufferRef = useRef(null);
26
+ // Timestamp of last insertable character for fast-return heuristic
27
+ const lastInsertTimeRef = useRef(0);
28
+ useEffect(() => {
29
+ callbacksRef.current = { onSubmit, onInputChange, onTabComplete };
30
+ });
31
+ const prevValueRef = useRef(value);
32
+ useEffect(() => {
33
+ if (prevValueRef.current !== value) {
34
+ prevValueRef.current = value;
35
+ callbacksRef.current.onInputChange?.(value);
36
+ }
37
+ }, [value]);
14
38
  // Cleanup function to properly exit
15
39
  const cleanExit = () => {
40
+ process.stdout.write('\x1b[?2004l');
16
41
  if (rawModeRef.current) {
17
42
  try {
18
43
  setRawMode(false);
@@ -25,9 +50,11 @@ export const InputArea = ({ onSubmit, onInputChange, onTabComplete, suggestions
25
50
  exit();
26
51
  };
27
52
  useEffect(() => {
28
- // Set raw mode to capture individual key presses
29
53
  setRawMode(true);
30
54
  rawModeRef.current = true;
55
+ // Enable bracketed paste mode so the terminal wraps pasted content
56
+ // with \x1b[200~ ... \x1b[201~ escape sequences
57
+ process.stdout.write('\x1b[?2004h');
31
58
  const handleData = (data) => {
32
59
  if (disabled)
33
60
  return;
@@ -37,33 +64,75 @@ export const InputArea = ({ onSubmit, onInputChange, onTabComplete, suggestions
37
64
  cleanExit();
38
65
  return;
39
66
  }
67
+ // --- Bracketed paste handling ---
68
+ const pasteStartIdx = input.indexOf(PASTE_START);
69
+ if (pasteStartIdx !== -1) {
70
+ if (pasteStartIdx > 0) {
71
+ handleData(Buffer.from(input.slice(0, pasteStartIdx)));
72
+ }
73
+ pasteBufferRef.current = '';
74
+ const afterStart = input.slice(pasteStartIdx + PASTE_START.length);
75
+ if (afterStart.length > 0) {
76
+ handleData(Buffer.from(afterStart));
77
+ }
78
+ return;
79
+ }
80
+ if (pasteBufferRef.current !== null) {
81
+ const pasteEndIdx = input.indexOf(PASTE_END);
82
+ if (pasteEndIdx !== -1) {
83
+ pasteBufferRef.current += input.slice(0, pasteEndIdx);
84
+ const pastedText = pasteBufferRef.current;
85
+ pasteBufferRef.current = null;
86
+ if (pastedText.length > 0) {
87
+ const normalized = pastedText.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
88
+ setValue(prev => prev + normalized);
89
+ }
90
+ const afterEnd = input.slice(pasteEndIdx + PASTE_END.length);
91
+ if (afterEnd.length > 0) {
92
+ handleData(Buffer.from(afterEnd));
93
+ }
94
+ }
95
+ else {
96
+ pasteBufferRef.current += input;
97
+ }
98
+ return;
99
+ }
40
100
  // Handle Tab key (0x09)
41
101
  if (input === '\t') {
42
- if (onTabComplete && value.startsWith('/')) {
43
- const completed = onTabComplete(value);
44
- if (completed) {
45
- setValue(completed);
46
- onInputChange?.(completed);
102
+ setValue(currentValue => {
103
+ const { onTabComplete } = callbacksRef.current;
104
+ if (onTabComplete && currentValue.startsWith('/')) {
105
+ const completed = onTabComplete(currentValue);
106
+ if (completed)
107
+ return completed;
47
108
  }
48
- }
109
+ return currentValue;
110
+ });
49
111
  return;
50
112
  }
51
113
  // Handle Enter (carriage return or newline)
52
114
  if (input === '\r' || input === '\n') {
53
- if (value.trim()) {
54
- onSubmit(value.trim());
55
- setValue('');
56
- onInputChange?.('');
115
+ const now = Date.now();
116
+ const timeSinceLastInsert = now - lastInsertTimeRef.current;
117
+ // Fast-return heuristic: treat rapid Enter after printable chars as paste newline
118
+ if (timeSinceLastInsert <= FAST_RETURN_THRESHOLD_MS) {
119
+ setValue(prev => prev + '\n');
120
+ return;
57
121
  }
122
+ setValue(currentValue => {
123
+ if (currentValue.trim()) {
124
+ setTimeout(() => {
125
+ callbacksRef.current.onSubmit(currentValue.trim());
126
+ }, 0);
127
+ return '';
128
+ }
129
+ return currentValue;
130
+ });
58
131
  return;
59
132
  }
60
133
  // Handle Backspace (0x7f or 0x08)
61
134
  if (input === '\x7f' || input === '\x08') {
62
- setValue(prev => {
63
- const newVal = prev.slice(0, -1);
64
- onInputChange?.(newVal);
65
- return newVal;
66
- });
135
+ setValue(prev => prev.slice(0, -1));
67
136
  return;
68
137
  }
69
138
  // Handle Escape - clear suggestions
@@ -71,26 +140,19 @@ export const InputArea = ({ onSubmit, onInputChange, onTabComplete, suggestions
71
140
  return;
72
141
  }
73
142
  // Handle regular printable characters
74
- if (input.length === 1 && input.charCodeAt(0) >= 32) {
75
- setValue(prev => {
76
- const newVal = prev + input;
77
- onInputChange?.(newVal);
78
- return newVal;
79
- });
80
- }
81
- else if (input.length > 1 && !input.startsWith('\x1b')) {
82
- // Handle pasted text
83
- setValue(prev => {
84
- const newVal = prev + input;
85
- onInputChange?.(newVal);
86
- return newVal;
87
- });
143
+ const isPrintable = !input.startsWith('\x1b') &&
144
+ input.length > 0 &&
145
+ !Array.from(input).some(ch => ch.charCodeAt(0) < 32);
146
+ if (isPrintable) {
147
+ lastInsertTimeRef.current = Date.now();
148
+ setValue(prev => prev + input);
88
149
  }
89
150
  };
90
151
  stdin.on('data', handleData);
91
152
  return () => {
92
153
  stdin.off('data', handleData);
93
- // Cleanup raw mode on unmount
154
+ pasteBufferRef.current = null;
155
+ process.stdout.write('\x1b[?2004l');
94
156
  if (rawModeRef.current) {
95
157
  try {
96
158
  setRawMode(false);
@@ -101,8 +163,9 @@ export const InputArea = ({ onSubmit, onInputChange, onTabComplete, suggestions
101
163
  }
102
164
  }
103
165
  };
104
- }, [stdin, setRawMode, disabled, value, onSubmit, onInputChange, onTabComplete]);
105
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: "You: " }), disabled ? (_jsx(Text, { dimColor: true, children: "..." })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: value }), _jsx(Text, { color: "gray", children: "\u258C" })] }))] }), !disabled && suggestions.length > 0 && (_jsx(Box, { marginLeft: 5, marginTop: 0, children: _jsx(Text, { dimColor: true, children: suggestions.length === 1
166
+ }, [stdin, setRawMode, disabled]);
167
+ const isMultiLine = value.includes('\n');
168
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: "You: " }), disabled ? (_jsx(Text, { dimColor: true, children: "..." })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: value }), _jsx(Text, { color: "gray", children: "\u258C" })] }))] }), !disabled && isMultiLine && (_jsx(Box, { marginLeft: 5, children: _jsx(Text, { dimColor: true, children: "\u2026 (multi-line, Enter to send)" }) })), !disabled && suggestions.length > 0 && (_jsx(Box, { marginLeft: 5, marginTop: 0, children: _jsx(Text, { dimColor: true, children: suggestions.length === 1
106
169
  ? `Tab → ${suggestions[0]}`
107
170
  : suggestions.slice(0, 5).join(' ') }) }))] }));
108
171
  };
@@ -1 +1 @@
1
- {"version":3,"file":"InputArea.js","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputArea.js","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpaean",
3
- "version": "0.7.14",
3
+ "version": "0.7.15",
4
4
  "description": "Open source AI agent CLI with executor framework (a8e, Claude Code), gateway relay, MCP support, and scrolling TUI",
5
5
  "author": "Paean AI <dev@paean.ai>",
6
6
  "license": "MIT",