@letta-ai/letta-code 0.18.0 → 0.18.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -35,7 +35,9 @@
35
35
  "dependencies": {
36
36
  "@letta-ai/letta-client": "^1.7.12",
37
37
  "glob": "^13.0.0",
38
+ "highlight.js": "^11.11.1",
38
39
  "ink-link": "^5.0.0",
40
+ "lowlight": "^3.3.0",
39
41
  "open": "^10.2.0",
40
42
  "sharp": "^0.34.5",
41
43
  "ws": "^8.19.0"
@@ -101,6 +101,7 @@ await copyToResolved(
101
101
  );
102
102
  await copyToResolved("vendor/ink/build/devtools.js", "ink/build/devtools.js");
103
103
  await copyToResolved("vendor/ink/build/log-update.js", "ink/build/log-update.js");
104
+ await copyToResolved("vendor/ink/build/wrap-text.js", "ink/build/wrap-text.js");
104
105
 
105
106
  // ink-text-input (optional vendor with externalCursorOffset support)
106
107
  await copyToResolved(
@@ -218,7 +218,7 @@ const useInput = (inputHandler, options = {}) => {
218
218
  console.error(`[debug:ink-keypress] raw=${rawHex} name="${keypress.name}" seq="${keypress.sequence}" key={escape:${key.escape},tab:${key.tab},shift:${key.shift},ctrl:${key.ctrl},meta:${key.meta}}`);
219
219
  }
220
220
 
221
- let input = keypress.ctrl ? keypress.name : keypress.sequence;
221
+ let input = (keypress.ctrl ? keypress.name : keypress.sequence) ?? '';
222
222
  const seq = typeof keypress.sequence === 'string' ? keypress.sequence : '';
223
223
  // Filter xterm focus in/out sequences (ESC[I / ESC[O)
224
224
  if (seq === '\u001B[I' || seq === '\u001B[O' || input === '[I' || input === '[O' || /^(?:\[I|\[O)+$/.test(input || '')) {
@@ -0,0 +1,31 @@
1
+ import wrapAnsi from 'wrap-ansi';
2
+ import cliTruncate from 'cli-truncate';
3
+ const cache = {};
4
+ const wrapText = (text, maxWidth, wrapType) => {
5
+ const cacheKey = text + String(maxWidth) + String(wrapType);
6
+ const cachedText = cache[cacheKey];
7
+ if (cachedText) {
8
+ return cachedText;
9
+ }
10
+ let wrappedText = text;
11
+ if (wrapType === 'wrap') {
12
+ wrappedText = wrapAnsi(text, maxWidth, {
13
+ trim: true,
14
+ hard: true,
15
+ });
16
+ }
17
+ if (wrapType.startsWith('truncate')) {
18
+ let position = 'end';
19
+ if (wrapType === 'truncate-middle') {
20
+ position = 'middle';
21
+ }
22
+ if (wrapType === 'truncate-start') {
23
+ position = 'start';
24
+ }
25
+ wrappedText = cliTruncate(text, maxWidth, { position });
26
+ }
27
+ cache[cacheKey] = wrappedText;
28
+ return wrappedText;
29
+ };
30
+ export default wrapText;
31
+ //# sourceMappingURL=wrap-text.js.map
@@ -70,21 +70,21 @@ function TextInput({ value: originalValue, placeholder = '', focus = true, mask,
70
70
  let renderedValue = value;
71
71
  let renderedPlaceholder = placeholder ? chalk.grey(placeholder) : undefined;
72
72
  if (showCursor && focus) {
73
- renderedPlaceholder = placeholder.length > 0 ? chalk.inverse(placeholder[0]) + chalk.grey(placeholder.slice(1)) : chalk.inverse(' ');
74
- renderedValue = value.length > 0 ? '' : chalk.inverse(' ');
73
+ renderedPlaceholder = placeholder.length > 0 ? chalk.inverse(placeholder[0]) + chalk.grey(placeholder.slice(1)) : chalk.inverse('\u00A0');
74
+ renderedValue = value.length > 0 ? '' : chalk.inverse('\u00A0');
75
75
  let i = 0;
76
76
  for (const char of value) {
77
77
  const isCursorPosition = i >= cursorOffset - cursorActualWidth && i <= cursorOffset;
78
78
  if (isCursorPosition && char === '\n') {
79
79
  // Newline at cursor: show inverted space (visible cursor) then the newline
80
- renderedValue += chalk.inverse(' ') + char;
80
+ renderedValue += chalk.inverse('\u00A0') + char;
81
81
  } else {
82
82
  renderedValue += isCursorPosition ? chalk.inverse(char) : char;
83
83
  }
84
84
  i++;
85
85
  }
86
86
  if (value.length > 0 && cursorOffset === value.length) {
87
- renderedValue += chalk.inverse(' ');
87
+ renderedValue += chalk.inverse('\u00A0');
88
88
  }
89
89
  }
90
90
  useInput((input, key) => {