@pickle-pee/genesis-cli 0.0.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 (65) hide show
  1. package/README.md +39 -0
  2. package/dist/bootstrap.d.ts +18 -0
  3. package/dist/bootstrap.js +89 -0
  4. package/dist/bootstrap.js.map +1 -0
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.js +14 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/input-loop.d.ts +42 -0
  9. package/dist/input-loop.js +344 -0
  10. package/dist/input-loop.js.map +1 -0
  11. package/dist/main.d.ts +35 -0
  12. package/dist/main.js +321 -0
  13. package/dist/main.js.map +1 -0
  14. package/dist/mode-dispatch.d.ts +100 -0
  15. package/dist/mode-dispatch.js +1830 -0
  16. package/dist/mode-dispatch.js.map +1 -0
  17. package/dist/rpc-server.d.ts +16 -0
  18. package/dist/rpc-server.js +339 -0
  19. package/dist/rpc-server.js.map +1 -0
  20. package/dist/session-store.d.ts +12 -0
  21. package/dist/session-store.js +48 -0
  22. package/dist/session-store.js.map +1 -0
  23. package/dist/terminal-display-width.d.ts +1 -0
  24. package/dist/terminal-display-width.js +33 -0
  25. package/dist/terminal-display-width.js.map +1 -0
  26. package/dist/test/bootstrap.test.d.ts +1 -0
  27. package/dist/test/bootstrap.test.js +50 -0
  28. package/dist/test/bootstrap.test.js.map +1 -0
  29. package/dist/test/input-loop-raw.test.d.ts +1 -0
  30. package/dist/test/input-loop-raw.test.js +204 -0
  31. package/dist/test/input-loop-raw.test.js.map +1 -0
  32. package/dist/test/interactive-tty-workbench.test.d.ts +1 -0
  33. package/dist/test/interactive-tty-workbench.test.js +647 -0
  34. package/dist/test/interactive-tty-workbench.test.js.map +1 -0
  35. package/dist/test/main.test.d.ts +1 -0
  36. package/dist/test/main.test.js +42 -0
  37. package/dist/test/main.test.js.map +1 -0
  38. package/dist/test/mode-dispatch.test.d.ts +1 -0
  39. package/dist/test/mode-dispatch.test.js +315 -0
  40. package/dist/test/mode-dispatch.test.js.map +1 -0
  41. package/dist/test/permission-flow.test.d.ts +7 -0
  42. package/dist/test/permission-flow.test.js +191 -0
  43. package/dist/test/permission-flow.test.js.map +1 -0
  44. package/dist/test/rpc-server.test.d.ts +7 -0
  45. package/dist/test/rpc-server.test.js +285 -0
  46. package/dist/test/rpc-server.test.js.map +1 -0
  47. package/dist/test/session-store.test.d.ts +1 -0
  48. package/dist/test/session-store.test.js +57 -0
  49. package/dist/test/session-store.test.js.map +1 -0
  50. package/dist/test/terminal-display-width.test.d.ts +1 -0
  51. package/dist/test/terminal-display-width.test.js +25 -0
  52. package/dist/test/terminal-display-width.test.js.map +1 -0
  53. package/dist/test/tty-session.test.d.ts +1 -0
  54. package/dist/test/tty-session.test.js +114 -0
  55. package/dist/test/tty-session.test.js.map +1 -0
  56. package/dist/theme.d.ts +16 -0
  57. package/dist/theme.js +20 -0
  58. package/dist/theme.js.map +1 -0
  59. package/dist/tty-session.d.ts +26 -0
  60. package/dist/tty-session.js +116 -0
  61. package/dist/tty-session.js.map +1 -0
  62. package/dist/types/index.d.ts +8 -0
  63. package/dist/types/index.js +3 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/package.json +26 -0
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.measureTerminalDisplayWidth = measureTerminalDisplayWidth;
4
+ function measureTerminalDisplayWidth(text) {
5
+ let width = 0;
6
+ for (const ch of text) {
7
+ width += terminalCharWidth(ch);
8
+ }
9
+ return width;
10
+ }
11
+ function terminalCharWidth(ch) {
12
+ if (ch === "\t")
13
+ return 4;
14
+ if (ch <= "\u001f" || ch === "\u007f")
15
+ return 0;
16
+ const codePoint = ch.codePointAt(0) ?? 0;
17
+ if (codePoint >= 0x300 && codePoint <= 0x36f)
18
+ return 0;
19
+ if ((codePoint >= 0x1100 && codePoint <= 0x115f) ||
20
+ (codePoint >= 0x2329 && codePoint <= 0x232a) ||
21
+ (codePoint >= 0x2e80 && codePoint <= 0xa4cf) ||
22
+ (codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
23
+ (codePoint >= 0xf900 && codePoint <= 0xfaff) ||
24
+ (codePoint >= 0xfe10 && codePoint <= 0xfe19) ||
25
+ (codePoint >= 0xfe30 && codePoint <= 0xfe6f) ||
26
+ (codePoint >= 0xff00 && codePoint <= 0xff60) ||
27
+ (codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
28
+ (codePoint >= 0x1f300 && codePoint <= 0x1faff)) {
29
+ return 2;
30
+ }
31
+ return 1;
32
+ }
33
+ //# sourceMappingURL=terminal-display-width.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-display-width.js","sourceRoot":"","sources":["../src/terminal-display-width.ts"],"names":[],"mappings":";;AAAA,kEAMC;AAND,SAAgB,2BAA2B,CAAC,IAAY;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACpC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IACvD,IACC,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,EAC7C,CAAC;QACF,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const promises_1 = require("node:fs/promises");
4
+ const node_os_1 = require("node:os");
5
+ const node_path_1 = require("node:path");
6
+ const vitest_1 = require("vitest");
7
+ const bootstrap_js_1 = require("../bootstrap.js");
8
+ (0, vitest_1.describe)("ensureAgentDirBootstrapped", () => {
9
+ (0, vitest_1.it)("creates models.json with the requested provider and model", async () => {
10
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "genesis-cli-bootstrap-"));
11
+ await (0, bootstrap_js_1.ensureAgentDirBootstrapped)({
12
+ agentDir: dir,
13
+ provider: "zai",
14
+ modelId: "glm-5.1",
15
+ bootstrapBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4/",
16
+ bootstrapApi: "openai-completions",
17
+ });
18
+ const models = JSON.parse(await (0, promises_1.readFile)((0, node_path_1.join)(dir, "models.json"), "utf8"));
19
+ const provider = models.providers.zai;
20
+ (0, vitest_1.expect)(provider.baseUrl).toBe("https://open.bigmodel.cn/api/coding/paas/v4/");
21
+ (0, vitest_1.expect)(provider.api).toBe("openai-completions");
22
+ (0, vitest_1.expect)(Array.isArray(provider.models)).toBe(true);
23
+ (0, vitest_1.expect)(provider.models.some((model) => model.id === "glm-5.1")).toBe(true);
24
+ });
25
+ (0, vitest_1.it)("does not override an existing configured provider/model entry", async () => {
26
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "genesis-cli-bootstrap-"));
27
+ const existing = {
28
+ providers: {
29
+ zai: {
30
+ baseUrl: "https://example.com/",
31
+ api: "openai-completions",
32
+ apiKey: "GENESIS_API_KEY",
33
+ authHeader: true,
34
+ models: [{ id: "glm-5.1", name: "glm-5.1", reasoning: false }],
35
+ },
36
+ },
37
+ };
38
+ await (0, promises_1.writeFile)((0, node_path_1.join)(dir, "models.json"), `${JSON.stringify(existing, null, 2)}\n`, "utf8");
39
+ const before = await (0, promises_1.readFile)((0, node_path_1.join)(dir, "models.json"), "utf8");
40
+ await (0, bootstrap_js_1.ensureAgentDirBootstrapped)({
41
+ agentDir: dir,
42
+ provider: "zai",
43
+ modelId: "glm-5.1",
44
+ bootstrapBaseUrl: "https://open.bigmodel.cn/api/coding/paas/v4/",
45
+ });
46
+ const after = await (0, promises_1.readFile)((0, node_path_1.join)(dir, "models.json"), "utf8");
47
+ (0, vitest_1.expect)(after).toBe(before);
48
+ });
49
+ });
50
+ //# sourceMappingURL=bootstrap.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.test.js","sourceRoot":"","sources":["../../src/test/bootstrap.test.ts"],"names":[],"mappings":";;AAAA,+CAAgE;AAChE,qCAAiC;AACjC,yCAAiC;AACjC,mCAA8C;AAC9C,kDAA6D;AAE7D,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC3C,IAAA,WAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACpE,MAAM,IAAA,yCAA0B,EAAC;YAChC,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,8CAA8C;YAChE,YAAY,EAAE,oBAAoB;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAEzE,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAU,CAAC;QAC7C,IAAA,eAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC9E,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG;YAChB,SAAS,EAAE;gBACV,GAAG,EAAE;oBACJ,OAAO,EAAE,sBAAsB;oBAC/B,GAAG,EAAE,oBAAoB;oBACzB,MAAM,EAAE,iBAAiB;oBACzB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBAC9D;aACD;SACD,CAAC;QACF,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAEhE,MAAM,IAAA,yCAA0B,EAAC;YAChC,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,8CAA8C;SAChE,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_stream_1 = require("node:stream");
4
+ const vitest_1 = require("vitest");
5
+ const input_loop_js_1 = require("../input-loop.js");
6
+ function createTtyPassThrough() {
7
+ const stream = new node_stream_1.PassThrough();
8
+ stream.isTTY = true;
9
+ stream.setRawMode = vitest_1.vi.fn();
10
+ stream.pause = vitest_1.vi.fn();
11
+ return stream;
12
+ }
13
+ (0, vitest_1.describe)("createInputLoop (rawMode)", () => {
14
+ (0, vitest_1.it)("supports basic editing (insert, cursor left, backspace) and enter", async () => {
15
+ const input = createTtyPassThrough();
16
+ const output = createTtyPassThrough();
17
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true });
18
+ try {
19
+ const next = loop.nextLine();
20
+ input.write("abc");
21
+ input.write("\u001b[D");
22
+ input.write(Buffer.from([0x7f]));
23
+ input.write("\r");
24
+ await (0, vitest_1.expect)(next).resolves.toBe("ac");
25
+ }
26
+ finally {
27
+ loop.close();
28
+ }
29
+ });
30
+ (0, vitest_1.it)("emits special key events for arrow keys", async () => {
31
+ const input = createTtyPassThrough();
32
+ const output = createTtyPassThrough();
33
+ const onKey = vitest_1.vi.fn();
34
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
35
+ try {
36
+ const pending = loop.nextLine();
37
+ input.write("\u001b[A");
38
+ input.write("\r");
39
+ await pending;
40
+ (0, vitest_1.expect)(onKey).toHaveBeenCalledWith("up");
41
+ }
42
+ finally {
43
+ loop.close();
44
+ }
45
+ });
46
+ (0, vitest_1.it)("emits wheel events for SGR mouse sequences", async () => {
47
+ const input = createTtyPassThrough();
48
+ const output = createTtyPassThrough();
49
+ const onKey = vitest_1.vi.fn();
50
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
51
+ try {
52
+ const pending = loop.nextLine();
53
+ input.write("\u001b[<64;10;10M");
54
+ input.write("\r");
55
+ await pending;
56
+ (0, vitest_1.expect)(onKey).toHaveBeenCalledWith("wheelup");
57
+ }
58
+ finally {
59
+ loop.close();
60
+ }
61
+ });
62
+ (0, vitest_1.it)("accepts lowercase sgr mouse terminators used by some terminals", async () => {
63
+ const input = createTtyPassThrough();
64
+ const output = createTtyPassThrough();
65
+ const onKey = vitest_1.vi.fn();
66
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
67
+ try {
68
+ const pending = loop.nextLine();
69
+ input.write("\u001b[<65;10;10m");
70
+ input.write("\r");
71
+ await pending;
72
+ (0, vitest_1.expect)(onKey).toHaveBeenCalledWith("wheeldown");
73
+ }
74
+ finally {
75
+ loop.close();
76
+ }
77
+ });
78
+ (0, vitest_1.it)("emits terminal focus events", async () => {
79
+ const input = createTtyPassThrough();
80
+ const output = createTtyPassThrough();
81
+ const onTerminalEvent = vitest_1.vi.fn();
82
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onTerminalEvent });
83
+ try {
84
+ const pending = loop.nextLine();
85
+ input.write("\u001b[O");
86
+ input.write("\u001b[I");
87
+ input.write("\r");
88
+ await pending;
89
+ (0, vitest_1.expect)(onTerminalEvent).toHaveBeenNthCalledWith(1, "focusout");
90
+ (0, vitest_1.expect)(onTerminalEvent).toHaveBeenNthCalledWith(2, "focusin");
91
+ }
92
+ finally {
93
+ loop.close();
94
+ }
95
+ });
96
+ (0, vitest_1.it)("handles fragmented escape sequences across input chunks", async () => {
97
+ const input = createTtyPassThrough();
98
+ const output = createTtyPassThrough();
99
+ const onKey = vitest_1.vi.fn();
100
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
101
+ try {
102
+ const pending = loop.nextLine();
103
+ input.write("\u001b[");
104
+ input.write("<64;");
105
+ input.write("10;10M");
106
+ input.write("\r");
107
+ await pending;
108
+ (0, vitest_1.expect)(onKey).toHaveBeenCalledWith("wheelup");
109
+ }
110
+ finally {
111
+ loop.close();
112
+ }
113
+ });
114
+ (0, vitest_1.it)("emits page navigation keys in raw mode", async () => {
115
+ const input = createTtyPassThrough();
116
+ const output = createTtyPassThrough();
117
+ const onKey = vitest_1.vi.fn();
118
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
119
+ try {
120
+ const pending = loop.nextLine();
121
+ input.write("\u001b[5~");
122
+ input.write("\u001b[6~");
123
+ input.write("\r");
124
+ await pending;
125
+ (0, vitest_1.expect)(onKey).toHaveBeenNthCalledWith(1, "pageup");
126
+ (0, vitest_1.expect)(onKey).toHaveBeenNthCalledWith(2, "pagedown");
127
+ }
128
+ finally {
129
+ loop.close();
130
+ }
131
+ });
132
+ (0, vitest_1.it)("emits tab and shift-tab special keys in raw mode", async () => {
133
+ const input = createTtyPassThrough();
134
+ const output = createTtyPassThrough();
135
+ const onKey = vitest_1.vi.fn();
136
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, onKey });
137
+ try {
138
+ const pending = loop.nextLine();
139
+ input.write("\t");
140
+ input.write("\u001b[Z");
141
+ input.write("\r");
142
+ await pending;
143
+ (0, vitest_1.expect)(onKey).toHaveBeenNthCalledWith(1, "tab");
144
+ (0, vitest_1.expect)(onKey).toHaveBeenNthCalledWith(2, "shifttab");
145
+ }
146
+ finally {
147
+ loop.close();
148
+ }
149
+ });
150
+ (0, vitest_1.it)("applies tab completion through the raw-mode callback", async () => {
151
+ const input = createTtyPassThrough();
152
+ const output = createTtyPassThrough();
153
+ const states = [];
154
+ const loop = (0, input_loop_js_1.createInputLoop)({
155
+ input,
156
+ output,
157
+ prompt: "",
158
+ rawMode: true,
159
+ onInputStateChange: (state) => {
160
+ states.push(state);
161
+ },
162
+ onTabComplete: () => ({ buffer: "/status ", cursor: 8 }),
163
+ });
164
+ try {
165
+ const pending = loop.nextLine();
166
+ input.write("/st");
167
+ input.write("\t");
168
+ input.write("\r");
169
+ await (0, vitest_1.expect)(pending).resolves.toBe("/status ");
170
+ (0, vitest_1.expect)(states).toContainEqual({ buffer: "/status ", cursor: 8 });
171
+ }
172
+ finally {
173
+ loop.close();
174
+ }
175
+ });
176
+ (0, vitest_1.it)("can suppress the automatic newline on submit for custom prompt renderers", async () => {
177
+ const input = createTtyPassThrough();
178
+ const output = createTtyPassThrough();
179
+ let rendered = "";
180
+ output.on("data", (chunk) => {
181
+ rendered += chunk.toString("utf8");
182
+ });
183
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true, submitNewline: false });
184
+ try {
185
+ const pending = loop.nextLine();
186
+ input.write("hello");
187
+ input.write("\r");
188
+ await (0, vitest_1.expect)(pending).resolves.toBe("hello");
189
+ (0, vitest_1.expect)(rendered).not.toContain("\n");
190
+ }
191
+ finally {
192
+ loop.close();
193
+ }
194
+ });
195
+ (0, vitest_1.it)("restores raw mode and pauses stdin on close", () => {
196
+ const input = createTtyPassThrough();
197
+ const output = createTtyPassThrough();
198
+ const loop = (0, input_loop_js_1.createInputLoop)({ input, output, prompt: "", rawMode: true });
199
+ loop.close();
200
+ (0, vitest_1.expect)(input.setRawMode).toHaveBeenCalledWith(false);
201
+ (0, vitest_1.expect)(input.pause).toHaveBeenCalled();
202
+ });
203
+ });
204
+ //# sourceMappingURL=input-loop-raw.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-loop-raw.test.js","sourceRoot":"","sources":["../../src/test/input-loop-raw.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};