@ellery/terminal-mcp 0.2.2 → 0.3.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 (62) hide show
  1. package/README.md +151 -5
  2. package/dist/index.js +51 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/prompts/index.d.ts.map +1 -1
  5. package/dist/prompts/index.js +8 -0
  6. package/dist/prompts/index.js.map +1 -1
  7. package/dist/server.d.ts +2 -3
  8. package/dist/server.d.ts.map +1 -1
  9. package/dist/server.js +21 -0
  10. package/dist/server.js.map +1 -1
  11. package/dist/terminal/index.d.ts +1 -1
  12. package/dist/terminal/index.d.ts.map +1 -1
  13. package/dist/terminal/manager.d.ts +66 -63
  14. package/dist/terminal/manager.d.ts.map +1 -1
  15. package/dist/terminal/manager.js +255 -101
  16. package/dist/terminal/manager.js.map +1 -1
  17. package/dist/terminal/session.d.ts +13 -0
  18. package/dist/terminal/session.d.ts.map +1 -1
  19. package/dist/terminal/session.js +116 -0
  20. package/dist/terminal/session.js.map +1 -1
  21. package/dist/tools/createSession.d.ts +44 -0
  22. package/dist/tools/createSession.d.ts.map +1 -0
  23. package/dist/tools/createSession.js +41 -0
  24. package/dist/tools/createSession.js.map +1 -0
  25. package/dist/tools/definitions.d.ts.map +1 -1
  26. package/dist/tools/definitions.js +8 -2
  27. package/dist/tools/definitions.js.map +1 -1
  28. package/dist/tools/destroySession.d.ts +31 -0
  29. package/dist/tools/destroySession.d.ts.map +1 -0
  30. package/dist/tools/destroySession.js +32 -0
  31. package/dist/tools/destroySession.js.map +1 -0
  32. package/dist/tools/getContent.d.ts +7 -0
  33. package/dist/tools/getContent.d.ts.map +1 -1
  34. package/dist/tools/getContent.js +8 -3
  35. package/dist/tools/getContent.js.map +1 -1
  36. package/dist/tools/index.d.ts.map +1 -1
  37. package/dist/tools/index.js +20 -1
  38. package/dist/tools/index.js.map +1 -1
  39. package/dist/tools/listSessions.d.ts +19 -0
  40. package/dist/tools/listSessions.d.ts.map +1 -0
  41. package/dist/tools/listSessions.js +23 -0
  42. package/dist/tools/listSessions.js.map +1 -0
  43. package/dist/tools/screenshot.d.ts +26 -3
  44. package/dist/tools/screenshot.d.ts.map +1 -1
  45. package/dist/tools/screenshot.js +55 -5
  46. package/dist/tools/screenshot.js.map +1 -1
  47. package/dist/tools/sendKey.d.ts +7 -0
  48. package/dist/tools/sendKey.d.ts.map +1 -1
  49. package/dist/tools/sendKey.js +7 -2
  50. package/dist/tools/sendKey.js.map +1 -1
  51. package/dist/tools/startRecording.js +1 -1
  52. package/dist/tools/startRecording.js.map +1 -1
  53. package/dist/tools/type.d.ts +7 -0
  54. package/dist/tools/type.d.ts.map +1 -1
  55. package/dist/tools/type.js +7 -2
  56. package/dist/tools/type.js.map +1 -1
  57. package/dist/utils/render.d.ts +21 -0
  58. package/dist/utils/render.d.ts.map +1 -0
  59. package/dist/utils/render.js +162 -0
  60. package/dist/utils/render.js.map +1 -0
  61. package/package.json +4 -1
  62. package/sandbox-permissions.png +0 -0
@@ -1,20 +1,43 @@
1
1
  import { z } from "zod";
2
2
  import { TerminalManager } from "../terminal/index.js";
3
- export declare const screenshotSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
3
+ export declare const screenshotSchema: z.ZodObject<{
4
+ format: z.ZodOptional<z.ZodEnum<["text", "ansi", "png"]>>;
5
+ sessionId: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ format?: "text" | "ansi" | "png" | undefined;
8
+ sessionId?: string | undefined;
9
+ }, {
10
+ format?: "text" | "ansi" | "png" | undefined;
11
+ sessionId?: string | undefined;
12
+ }>;
4
13
  export type ScreenshotArgs = z.infer<typeof screenshotSchema>;
5
14
  export declare const screenshotTool: {
6
15
  name: string;
7
16
  description: string;
8
17
  inputSchema: {
9
18
  type: "object";
10
- properties: {};
19
+ properties: {
20
+ format: {
21
+ type: string;
22
+ enum: string[];
23
+ description: string;
24
+ };
25
+ sessionId: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ };
11
30
  required: never[];
12
31
  };
13
32
  };
14
- export declare function handleScreenshot(manager: TerminalManager, _args: unknown): {
33
+ export declare function handleScreenshot(manager: TerminalManager, args: unknown): {
15
34
  content: Array<{
16
35
  type: "text";
17
36
  text: string;
37
+ } | {
38
+ type: "image";
39
+ data: string;
40
+ mimeType: string;
18
41
  }>;
19
42
  };
20
43
  //# sourceMappingURL=screenshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,gDAAe,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE9D,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAiB7H"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,eAAO,MAAM,gBAAgB;;;;;;;;;EAK3B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;CAoB1B,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,OAAO,GACZ;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAwDxG"}
@@ -1,16 +1,66 @@
1
1
  import { z } from "zod";
2
- export const screenshotSchema = z.object({});
2
+ import { renderTerminalToPng } from "../utils/render.js";
3
+ export const screenshotSchema = z.object({
4
+ format: z.enum(["text", "ansi", "png"]).optional().describe("Output format: 'text' (default) returns plain JSON, 'ansi' returns text with ANSI color codes, 'png' returns a color screenshot image"),
5
+ sessionId: z.string().optional().describe("Target session ID. Omit to target the default session."),
6
+ });
3
7
  export const screenshotTool = {
4
8
  name: "takeScreenshot",
5
- description: "Capture terminal state as structured JSON with: content (visible text), cursor {x, y} position, and dimensions {cols, rows}. Use when you need cursor position (e.g., for interactive apps, vim) or terminal dimensions. For simple command output, prefer getContent().",
9
+ description: "Capture terminal state. Format 'text' (default) returns plain JSON with content, cursor, dimensions. Format 'ansi' returns JSON with ANSI color escape codes preserved in the content field. Format 'png' returns a color screenshot image.",
6
10
  inputSchema: {
7
11
  type: "object",
8
- properties: {},
12
+ properties: {
13
+ format: {
14
+ type: "string",
15
+ enum: ["text", "ansi", "png"],
16
+ description: "Output format: 'text' (default) plain JSON, 'ansi' for colored text with ANSI codes, 'png' for color screenshot image",
17
+ },
18
+ sessionId: {
19
+ type: "string",
20
+ description: "Target session ID. Omit to target the default session.",
21
+ },
22
+ },
9
23
  required: [],
10
24
  },
11
25
  };
12
- export function handleScreenshot(manager, _args) {
13
- const screenshot = manager.takeScreenshot();
26
+ export function handleScreenshot(manager, args) {
27
+ const parsed = screenshotSchema.parse(args);
28
+ const format = parsed.format || "text";
29
+ if (format === "ansi") {
30
+ const content = manager.getAnsiContent(true, parsed.sessionId);
31
+ const buffer = manager.getTerminal(parsed.sessionId).buffer.active;
32
+ const result = {
33
+ content,
34
+ cursor: { x: buffer.cursorX, y: buffer.cursorY },
35
+ dimensions: {
36
+ cols: manager.getDimensions(parsed.sessionId).cols,
37
+ rows: manager.getDimensions(parsed.sessionId).rows,
38
+ },
39
+ };
40
+ return {
41
+ content: [
42
+ {
43
+ type: "text",
44
+ text: JSON.stringify(result, null, 2),
45
+ },
46
+ ],
47
+ };
48
+ }
49
+ if (format === "png") {
50
+ const terminal = manager.getTerminal(parsed.sessionId);
51
+ const pngBuffer = renderTerminalToPng(terminal);
52
+ return {
53
+ content: [
54
+ {
55
+ type: "image",
56
+ data: pngBuffer.toString("base64"),
57
+ mimeType: "image/png",
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ // Default text format
63
+ const screenshot = manager.takeScreenshot(parsed.sessionId);
14
64
  const result = {
15
65
  content: screenshot.content,
16
66
  cursor: screenshot.cursor,
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAI7C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0QAA0Q;IACvR,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,OAAwB,EAAE,KAAc;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAE5C,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,13 @@ import { z } from "zod";
2
2
  import { TerminalManager } from "../terminal/index.js";
3
3
  export declare const sendKeySchema: z.ZodObject<{
4
4
  key: z.ZodString;
5
+ sessionId: z.ZodOptional<z.ZodString>;
5
6
  }, "strip", z.ZodTypeAny, {
6
7
  key: string;
8
+ sessionId?: string | undefined;
7
9
  }, {
8
10
  key: string;
11
+ sessionId?: string | undefined;
9
12
  }>;
10
13
  export type SendKeyArgs = z.infer<typeof sendKeySchema>;
11
14
  export declare const sendKeyTool: {
@@ -18,6 +21,10 @@ export declare const sendKeyTool: {
18
21
  type: string;
19
22
  description: string;
20
23
  };
24
+ sessionId: {
25
+ type: string;
26
+ description: string;
27
+ };
21
28
  };
22
29
  required: string[];
23
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sendKey.d.ts","sourceRoot":"","sources":["../../src/tools/sendKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAIxD,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAqBzH"}
1
+ {"version":3,"file":"sendKey.d.ts","sourceRoot":"","sources":["../../src/tools/sendKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAIxD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAiBvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAqBzH"}
@@ -2,11 +2,12 @@ import { z } from "zod";
2
2
  import { getKeySequence, getAvailableKeys } from "../utils/keys.js";
3
3
  export const sendKeySchema = z.object({
4
4
  key: z.string().describe("The key to send (e.g., 'Enter', 'Tab', 'Ctrl+C', 'ArrowUp')"),
5
+ sessionId: z.string().optional().describe("Target session ID. Omit to target the default session."),
5
6
  });
6
7
  const availableKeys = getAvailableKeys();
7
8
  export const sendKeyTool = {
8
9
  name: "sendKey",
9
- description: "Send a special key or key combination to the terminal. Common keys: Enter, Tab, Escape, Backspace, Delete, ArrowUp/Down/Left/Right, Home, End, PageUp, PageDown. Control sequences: Ctrl+C (interrupt), Ctrl+D (EOF), Ctrl+Z (suspend), Ctrl+L (clear screen), Ctrl+A (line start), Ctrl+E (line end), Ctrl+U (clear line). Function keys: F1-F12.",
10
+ description: "Send a special key or key combination to the terminal. Common keys: Enter, Tab, Escape, Backspace, Delete, ArrowUp/Down/Left/Right, Home, End, PageUp, PageDown. Control sequences: Ctrl+C (interrupt), Ctrl+D (EOF), Ctrl+Z (suspend), Ctrl+L (clear screen), Ctrl+A (line start), Ctrl+E (line end), Ctrl+U (clear line). Function keys: F1-F12. Pass sessionId to target a specific session.",
10
11
  inputSchema: {
11
12
  type: "object",
12
13
  properties: {
@@ -14,6 +15,10 @@ export const sendKeyTool = {
14
15
  type: "string",
15
16
  description: "The key to send (e.g., 'Enter', 'Tab', 'Ctrl+C', 'ArrowUp', 'Escape')",
16
17
  },
18
+ sessionId: {
19
+ type: "string",
20
+ description: "Target session ID. Omit to target the default session.",
21
+ },
17
22
  },
18
23
  required: ["key"],
19
24
  },
@@ -25,7 +30,7 @@ export function handleSendKey(manager, args) {
25
30
  const available = getAvailableKeys();
26
31
  throw new Error(`Unknown key: "${parsed.key}". Available keys include: ${available.slice(0, 15).join(", ")}...`);
27
32
  }
28
- manager.write(sequence);
33
+ manager.write(sequence, parsed.sessionId);
29
34
  return {
30
35
  content: [
31
36
  {
@@ -1 +1 @@
1
- {"version":3,"file":"sendKey.js","sourceRoot":"","sources":["../../src/tools/sendKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;CACxF,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oVAAoV;IACjW,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,IAAa;IACnE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,GAAG,8BAA8B,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAChG,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa,MAAM,CAAC,GAAG,EAAE;aAChC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sendKey.js","sourceRoot":"","sources":["../../src/tools/sendKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACvF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;CACpG,CAAC,CAAC;AAIH,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,iYAAiY;IAC9Y,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,IAAa;IACnE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,GAAG,8BAA8B,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAChG,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa,MAAM,CAAC,GAAG,EAAE;aAChC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -9,7 +9,7 @@ export const startRecordingSchema = z.object({
9
9
  });
10
10
  export const startRecordingTool = {
11
11
  name: "startRecording",
12
- description: "Start recording terminal output to an asciicast v2 file. Returns the recording ID and path where the file will be saved. Only one recording can be active at a time.",
12
+ description: "Start recording terminal output to an asciicast v2 file. Returns the recording ID and path where the file will be saved. Only one recording can be active at a time. Recording captures output from all active sessions in the process.",
13
13
  inputSchema: {
14
14
  type: "object",
15
15
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"startRecording.js","sourceRoot":"","sources":["../../src/tools/startRecording.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startRecording.js","sourceRoot":"","sources":["../../src/tools/startRecording.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,13 @@ import { z } from "zod";
2
2
  import { TerminalManager } from "../terminal/index.js";
3
3
  export declare const typeSchema: z.ZodObject<{
4
4
  text: z.ZodString;
5
+ sessionId: z.ZodOptional<z.ZodString>;
5
6
  }, "strip", z.ZodTypeAny, {
6
7
  text: string;
8
+ sessionId?: string | undefined;
7
9
  }, {
8
10
  text: string;
11
+ sessionId?: string | undefined;
9
12
  }>;
10
13
  export type TypeArgs = z.infer<typeof typeSchema>;
11
14
  export declare const typeTool: {
@@ -18,6 +21,10 @@ export declare const typeTool: {
18
21
  type: string;
19
22
  description: string;
20
23
  };
24
+ sessionId: {
25
+ type: string;
26
+ description: string;
27
+ };
21
28
  };
22
29
  required: string[];
23
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/tools/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,UAAU;;;;;;EAErB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAapB,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAYtH"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/tools/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,UAAU;;;;;;;;;EAGrB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;CAiBpB,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAYtH"}
@@ -1,10 +1,11 @@
1
1
  import { z } from "zod";
2
2
  export const typeSchema = z.object({
3
3
  text: z.string().describe("The text to type into the terminal"),
4
+ sessionId: z.string().optional().describe("Target session ID. Omit to target the default session."),
4
5
  });
5
6
  export const typeTool = {
6
7
  name: "type",
7
- description: "Send text input to the terminal. Text is written exactly as provided - no Enter key is sent automatically. To execute a command, use type() followed by sendKey('Enter'). Example workflow: type('ls -la') → sendKey('Enter') → getContent(). IMPORTANT: In zsh, avoid '!' inside double quotes as it triggers history expansion - use single quotes instead (e.g., echo 'Hello!' not echo \"Hello!\").",
8
+ description: "Send text input to the terminal. Text is written exactly as provided - no Enter key is sent automatically. To execute a command, use type() followed by sendKey('Enter'). Example workflow: type('ls -la') → sendKey('Enter') → getContent(). Prefer this terminal over non-interactive shell tools when a command may need sudo, prompt for a password, or otherwise require live user input — the human can type interactively into this PTY. Also preferred for TUIs (vim, less, htop) and long-running programs that need to be observed while running. IMPORTANT: In zsh, avoid '!' inside double quotes as it triggers history expansion - use single quotes instead (e.g., echo 'Hello!' not echo \"Hello!\"). Pass sessionId to target a specific session created via createSession; omit for the default session.",
8
9
  inputSchema: {
9
10
  type: "object",
10
11
  properties: {
@@ -12,13 +13,17 @@ export const typeTool = {
12
13
  type: "string",
13
14
  description: "The text to type into the terminal",
14
15
  },
16
+ sessionId: {
17
+ type: "string",
18
+ description: "Target session ID. Omit to target the default session.",
19
+ },
15
20
  },
16
21
  required: ["text"],
17
22
  },
18
23
  };
19
24
  export function handleType(manager, args) {
20
25
  const parsed = typeSchema.parse(args);
21
- manager.write(parsed.text);
26
+ manager.write(parsed.text, parsed.sessionId);
22
27
  return {
23
28
  content: [
24
29
  {
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/tools/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAChE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,yYAAyY;IACtZ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAwB,EAAE,IAAa;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,2BAA2B;aAC7D;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/tools/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;CACpG,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4xBAA4xB;IACzyB,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAwB,EAAE,IAAa;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,2BAA2B;aAC7D;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Renders the terminal buffer to a PNG image via SVG.
3
+ * Uses @xterm/headless buffer cell API for color extraction
4
+ * and @resvg/resvg-js for SVG-to-PNG conversion.
5
+ */
6
+ import type { Terminal } from "@xterm/headless";
7
+ export interface RenderOptions {
8
+ /** Font family name (must be available to resvg). Default: 'JetBrains Mono' */
9
+ fontFamily?: string;
10
+ /** Directories to search for font files */
11
+ fontDirs?: string[];
12
+ /** Show macOS-style window chrome (traffic lights). Default: true */
13
+ windowChrome?: boolean;
14
+ /** Output scale multiplier. Default: 2 (retina) */
15
+ scale?: number;
16
+ }
17
+ /**
18
+ * Render an xterm.js Terminal buffer to a PNG image buffer.
19
+ */
20
+ export declare function renderTerminalToPng(terminal: Terminal, options?: RenderOptions): Buffer;
21
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/utils/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA8EhD,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAkG3F"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Renders the terminal buffer to a PNG image via SVG.
3
+ * Uses @xterm/headless buffer cell API for color extraction
4
+ * and @resvg/resvg-js for SVG-to-PNG conversion.
5
+ */
6
+ import { createRequire } from "module";
7
+ import * as os from "os";
8
+ import * as path from "path";
9
+ import * as fs from "fs";
10
+ const require = createRequire(import.meta.url);
11
+ function defaultFontDirs() {
12
+ const dirs = [];
13
+ const home = os.homedir();
14
+ // Common font directories
15
+ const candidates = [
16
+ path.join(home, '.local/share/fonts'),
17
+ '/usr/share/fonts',
18
+ '/usr/local/share/fonts',
19
+ '/System/Library/Fonts',
20
+ path.join(home, 'Library/Fonts'),
21
+ ];
22
+ for (const d of candidates) {
23
+ try {
24
+ if (fs.statSync(d).isDirectory())
25
+ dirs.push(d);
26
+ }
27
+ catch { /* skip */ }
28
+ }
29
+ return dirs;
30
+ }
31
+ // xterm.js CellColorMode bitmask values from IBufferCell.getFgColorMode():
32
+ const CM_DEFAULT = 0;
33
+ const CM_P16 = 16777216; // 0x1000000 — 16-color palette (SGR 30-37, 90-97)
34
+ const CM_P256 = 33554432; // 0x2000000 — 256-color palette (SGR 38;5;N)
35
+ const CM_RGB = 50331648; // 0x3000000 — 24-bit truecolor (SGR 38;2;R;G;B)
36
+ // One Dark color palette for the basic 16 ANSI colors
37
+ const palette16 = [
38
+ '#282c34', '#e06c75', '#98c379', '#e5c07b', '#61afef', '#c678dd', '#56b6c2', '#abb2bf',
39
+ '#5c6370', '#e06c75', '#98c379', '#e5c07b', '#61afef', '#c678dd', '#56b6c2', '#ffffff',
40
+ ];
41
+ const BG_COLOR = '#282c34';
42
+ const FG_COLOR = '#abb2bf';
43
+ function color256(n) {
44
+ if (n < 16)
45
+ return palette16[n];
46
+ if (n < 232) {
47
+ n -= 16;
48
+ const r = Math.floor(n / 36) * 51;
49
+ const g = Math.floor((n % 36) / 6) * 51;
50
+ const b = (n % 6) * 51;
51
+ return `rgb(${r},${g},${b})`;
52
+ }
53
+ const gray = (n - 232) * 10 + 8;
54
+ return `rgb(${gray},${gray},${gray})`;
55
+ }
56
+ function resolveColor(color, mode, isBackground) {
57
+ if (mode === CM_DEFAULT || color < 0) {
58
+ return isBackground ? BG_COLOR : FG_COLOR;
59
+ }
60
+ if (mode === CM_P16) {
61
+ return palette16[color] || (isBackground ? BG_COLOR : FG_COLOR);
62
+ }
63
+ if (mode === CM_P256) {
64
+ if (color < 16)
65
+ return palette16[color];
66
+ return color256(color);
67
+ }
68
+ if (mode === CM_RGB) {
69
+ const r = (color >> 16) & 0xff;
70
+ const g = (color >> 8) & 0xff;
71
+ const b = color & 0xff;
72
+ return `rgb(${r},${g},${b})`;
73
+ }
74
+ return isBackground ? BG_COLOR : FG_COLOR;
75
+ }
76
+ function escapeXml(s) {
77
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
78
+ }
79
+ /**
80
+ * Render an xterm.js Terminal buffer to a PNG image buffer.
81
+ */
82
+ export function renderTerminalToPng(terminal, options = {}) {
83
+ const { fontFamily = 'JetBrains Mono', fontDirs: userFontDirs = [], windowChrome = true, scale = 2, } = options;
84
+ // Default font search paths if none provided
85
+ const fontDirs = userFontDirs.length > 0
86
+ ? userFontDirs
87
+ : defaultFontDirs();
88
+ const cols = terminal.cols;
89
+ const rows = terminal.rows;
90
+ const buffer = terminal.buffer.active;
91
+ // Character metrics (approximate for 13px monospace)
92
+ const charW = 8.4;
93
+ const charH = 17;
94
+ const padX = 16;
95
+ const padY = windowChrome ? 44 : 16;
96
+ const padBottom = 12;
97
+ const width = cols * charW + padX * 2;
98
+ const height = rows * charH + padY + padBottom;
99
+ const cornerR = 10;
100
+ // Build SVG
101
+ let svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
102
+ <defs>
103
+ <style>
104
+ text { font-family: '${fontFamily}'; font-size: 13px; }
105
+ </style>
106
+ </defs>
107
+ <rect width="${width}" height="${height}" rx="${cornerR}" ry="${cornerR}" fill="${BG_COLOR}"/>`;
108
+ if (windowChrome) {
109
+ svg += `
110
+ <circle cx="20" cy="18" r="6" fill="#ff5f57"/>
111
+ <circle cx="40" cy="18" r="6" fill="#febc2e"/>
112
+ <circle cx="60" cy="18" r="6" fill="#28c840"/>`;
113
+ }
114
+ svg += '\n';
115
+ // Render each character individually at its exact grid position
116
+ // (grouping into text runs causes drift with Unicode box/block characters)
117
+ for (let y = 0; y < rows; y++) {
118
+ const line = buffer.getLine(y);
119
+ if (!line)
120
+ continue;
121
+ for (let x = 0; x < cols; x++) {
122
+ const cell = line.getCell(x);
123
+ if (!cell)
124
+ continue;
125
+ const char = cell.getChars();
126
+ if (!char || char === ' ')
127
+ continue;
128
+ const bgColor = resolveColor(cell.getBgColor(), cell.getBgColorMode(), true);
129
+ const fgColor = resolveColor(cell.getFgColor(), cell.getFgColorMode(), false);
130
+ const bold = cell.isBold() === 1;
131
+ const cx = padX + x * charW;
132
+ const cy = padY + y * charH;
133
+ // Render non-default backgrounds
134
+ if (bgColor !== BG_COLOR) {
135
+ svg += `<rect x="${cx}" y="${cy}" width="${charW}" height="${charH}" fill="${bgColor}"/>`;
136
+ }
137
+ const weight = bold ? ' font-weight="bold"' : '';
138
+ svg += `<text x="${cx}" y="${cy + charH - 4}" fill="${fgColor}"${weight}>${escapeXml(char)}</text>\n`;
139
+ }
140
+ }
141
+ svg += '</svg>';
142
+ // Convert SVG to PNG
143
+ // Dynamic import to avoid hard failure if resvg is not installed
144
+ let Resvg;
145
+ try {
146
+ Resvg = require('@resvg/resvg-js').Resvg;
147
+ }
148
+ catch {
149
+ throw new Error('PNG screenshot requires @resvg/resvg-js. Install it with: npm install @resvg/resvg-js');
150
+ }
151
+ const resvg = new Resvg(svg, {
152
+ fitTo: { mode: 'width', value: Math.round(width * scale) },
153
+ font: {
154
+ loadSystemFonts: fontDirs.length === 0,
155
+ fontDirs,
156
+ defaultFontFamily: fontFamily,
157
+ },
158
+ });
159
+ const pngData = resvg.render();
160
+ return Buffer.from(pngData.asPng());
161
+ }
162
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/utils/render.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ellery/terminal-mcp",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "A headless terminal emulator exposed via MCP for AI assistants",
5
5
  "author": "Ellery Familia",
6
6
  "repository": {
@@ -28,6 +28,9 @@
28
28
  "node-pty": "^1.2.0-beta.8",
29
29
  "zod": "^3.23.0"
30
30
  },
31
+ "optionalDependencies": {
32
+ "@resvg/resvg-js": "^2.6.0"
33
+ },
31
34
  "devDependencies": {
32
35
  "@types/node": "^20.0.0",
33
36
  "tsx": "^4.0.0",
Binary file