@rk0429/agentic-relay 19.2.0 → 19.2.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.
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
2
+ import { useEffect, useState } from "react";
3
3
  import { Box, render, useApp, useInput } from "ink";
4
4
  import { Header } from "./components/Header.js";
5
5
  import { MessageList } from "./components/MessageList.js";
6
6
  import { InputBar } from "./components/InputBar.js";
7
7
  import { StatusBar } from "./components/StatusBar.js";
8
+ import { deleteLastGrapheme, extractBracketedPaste, ENABLE_BRACKETED_PASTE, DISABLE_BRACKETED_PASTE, } from "./text-input-utils.js";
8
9
  export async function runRelayInteractiveShell(options) {
9
10
  const instance = render(_jsx(RelayShellApp, { service: options.service, initialSession: options.initialSession }));
10
11
  await instance.waitUntilExit();
@@ -16,6 +17,18 @@ function RelayShellApp(props) {
16
17
  const [input, setInput] = useState("");
17
18
  const [busy, setBusy] = useState(false);
18
19
  const [notice, setNotice] = useState();
20
+ // Enable bracketed paste mode on mount so that terminals wrap
21
+ // pasted (and some IME-committed) text in detectable markers.
22
+ useEffect(() => {
23
+ process.stdout.write(ENABLE_BRACKETED_PASTE);
24
+ return () => {
25
+ process.stdout.write(DISABLE_BRACKETED_PASTE);
26
+ };
27
+ }, []);
28
+ // Use ink's useInput which wraps the callback in reconciler.batchedUpdates().
29
+ // This is critical for LegacyRoot: without batchedUpdates, setState triggers
30
+ // a synchronous commit whose onRender may be throttled, causing Yoga to
31
+ // report stale computed widths and wrapAnsi to break CJK text vertically.
19
32
  useInput((keyInput, key) => {
20
33
  if (key.ctrl && keyInput === "c") {
21
34
  exit();
@@ -24,6 +37,17 @@ function RelayShellApp(props) {
24
37
  if (busy) {
25
38
  return;
26
39
  }
40
+ // Bracketed paste: useInput strips the leading \e from the sequence,
41
+ // so a paste arrives as "[200~…content…\e[201~". Re-prepend \e to
42
+ // reconstruct the original sequence for extractBracketedPaste().
43
+ const pasteContent = extractBracketedPaste("\x1b" + keyInput);
44
+ if (pasteContent !== undefined) {
45
+ const cleaned = pasteContent.replace(/[\r\n]+/g, " ").trim();
46
+ if (cleaned) {
47
+ setInput((previous) => previous + cleaned);
48
+ }
49
+ return;
50
+ }
27
51
  if (key.ctrl && keyInput.toLowerCase() === "b") {
28
52
  const nextSession = props.service.cycleInteractiveBackend(session);
29
53
  setSession(nextSession);
@@ -63,7 +87,7 @@ function RelayShellApp(props) {
63
87
  return;
64
88
  }
65
89
  if (key.backspace || key.delete) {
66
- setInput((previous) => previous.slice(0, -1));
90
+ setInput((previous) => deleteLastGrapheme(previous));
67
91
  return;
68
92
  }
69
93
  if (key.ctrl || key.meta || key.escape || !keyInput) {
@@ -1 +1 @@
1
- {"version":3,"file":"relay-shell.js","sourceRoot":"","sources":["../../../src/interfaces/cli/relay-shell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-shell.js","sourceRoot":"","sources":["../../../src/interfaces/cli/relay-shell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Delete the last grapheme cluster from a string.
3
+ * Unlike `str.slice(0, -1)` which operates on UTF-16 code units,
4
+ * this correctly handles CJK characters, emoji, surrogate pairs,
5
+ * and combining characters.
6
+ */
7
+ export declare function deleteLastGrapheme(str: string): string;
8
+ /**
9
+ * Bracketed paste mode escape sequences.
10
+ * When enabled, the terminal wraps pasted text in these markers,
11
+ * allowing the application to distinguish pasted text from typed input.
12
+ * Some terminals also use this for IME-committed text.
13
+ */
14
+ export declare const BRACKETED_PASTE_START = "\u001B[200~";
15
+ export declare const BRACKETED_PASTE_END = "\u001B[201~";
16
+ export declare const ENABLE_BRACKETED_PASTE = "\u001B[?2004h";
17
+ export declare const DISABLE_BRACKETED_PASTE = "\u001B[?2004l";
18
+ /**
19
+ * Extract text from a bracketed paste sequence.
20
+ * Returns the inner text if the string contains bracketed paste markers,
21
+ * or undefined if no markers are found.
22
+ */
23
+ export declare function extractBracketedPaste(data: string): string | undefined;
@@ -0,0 +1,47 @@
1
+ const segmenter = new Intl.Segmenter(undefined, { granularity: "grapheme" });
2
+ /**
3
+ * Delete the last grapheme cluster from a string.
4
+ * Unlike `str.slice(0, -1)` which operates on UTF-16 code units,
5
+ * this correctly handles CJK characters, emoji, surrogate pairs,
6
+ * and combining characters.
7
+ */
8
+ export function deleteLastGrapheme(str) {
9
+ if (str.length === 0) {
10
+ return str;
11
+ }
12
+ const segments = [...segmenter.segment(str)];
13
+ if (segments.length === 0) {
14
+ return str;
15
+ }
16
+ const last = segments[segments.length - 1];
17
+ return str.slice(0, last.index);
18
+ }
19
+ /**
20
+ * Bracketed paste mode escape sequences.
21
+ * When enabled, the terminal wraps pasted text in these markers,
22
+ * allowing the application to distinguish pasted text from typed input.
23
+ * Some terminals also use this for IME-committed text.
24
+ */
25
+ export const BRACKETED_PASTE_START = "\x1b[200~";
26
+ export const BRACKETED_PASTE_END = "\x1b[201~";
27
+ export const ENABLE_BRACKETED_PASTE = "\x1b[?2004h";
28
+ export const DISABLE_BRACKETED_PASTE = "\x1b[?2004l";
29
+ /**
30
+ * Extract text from a bracketed paste sequence.
31
+ * Returns the inner text if the string contains bracketed paste markers,
32
+ * or undefined if no markers are found.
33
+ */
34
+ export function extractBracketedPaste(data) {
35
+ const startIdx = data.indexOf(BRACKETED_PASTE_START);
36
+ if (startIdx === -1) {
37
+ return undefined;
38
+ }
39
+ const contentStart = startIdx + BRACKETED_PASTE_START.length;
40
+ const endIdx = data.indexOf(BRACKETED_PASTE_END, contentStart);
41
+ if (endIdx === -1) {
42
+ // Paste end marker not found; treat everything after start as pasted text
43
+ return data.slice(contentStart);
44
+ }
45
+ return data.slice(contentStart, endIdx);
46
+ }
47
+ //# sourceMappingURL=text-input-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-input-utils.js","sourceRoot":"","sources":["../../../src/interfaces/cli/text-input-utils.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC5C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,0EAA0E;QAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC"}
@@ -701,7 +701,7 @@ const TOOL_DESCRIPTIONS = {
701
701
  export function createRelayMcpServer(options) {
702
702
  const server = new McpServer({
703
703
  name: "agentic-relay",
704
- version: "19.2.0",
704
+ version: "19.2.2",
705
705
  });
706
706
  if (options.allowSpawnAgents) {
707
707
  server.registerTool("spawn_agents", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rk0429/agentic-relay",
3
- "version": "19.2.0",
3
+ "version": "19.2.2",
4
4
  "displayName": "agentic-relay",
5
5
  "description": "Unified MCP relay for Claude Code, Codex CLI, and Gemini CLI",
6
6
  "type": "module",