poly-weaver 1.0.0 → 1.1.1

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 (227) hide show
  1. package/dist/agents/implementors/adapter.d.ts +2 -0
  2. package/dist/agents/implementors/adapter.d.ts.map +1 -1
  3. package/dist/agents/implementors/adapter.js +8 -4
  4. package/dist/agents/implementors/adapter.js.map +1 -1
  5. package/dist/agents/implementors/handler.d.ts.map +1 -1
  6. package/dist/agents/implementors/handler.js +33 -6
  7. package/dist/agents/implementors/handler.js.map +1 -1
  8. package/dist/agents/implementors/prompts.d.ts +5 -4
  9. package/dist/agents/implementors/prompts.d.ts.map +1 -1
  10. package/dist/agents/implementors/prompts.js +14 -13
  11. package/dist/agents/implementors/prompts.js.map +1 -1
  12. package/dist/agents/implementors/types.d.ts +6 -4
  13. package/dist/agents/implementors/types.d.ts.map +1 -1
  14. package/dist/agents/interviewers/adapter.d.ts.map +1 -1
  15. package/dist/agents/interviewers/adapter.js +2 -1
  16. package/dist/agents/interviewers/adapter.js.map +1 -1
  17. package/dist/agents/interviewers/completion-warning.d.ts +5 -0
  18. package/dist/agents/interviewers/completion-warning.d.ts.map +1 -0
  19. package/dist/agents/interviewers/completion-warning.js +20 -0
  20. package/dist/agents/interviewers/completion-warning.js.map +1 -0
  21. package/dist/agents/interviewers/handler.d.ts.map +1 -1
  22. package/dist/agents/interviewers/handler.js +5 -0
  23. package/dist/agents/interviewers/handler.js.map +1 -1
  24. package/dist/agents/interviewers/types.d.ts +2 -0
  25. package/dist/agents/interviewers/types.d.ts.map +1 -1
  26. package/dist/agents/plan-steering.d.ts +16 -0
  27. package/dist/agents/plan-steering.d.ts.map +1 -0
  28. package/dist/agents/plan-steering.js +102 -0
  29. package/dist/agents/plan-steering.js.map +1 -0
  30. package/dist/agents/planners/adapter.d.ts +3 -1
  31. package/dist/agents/planners/adapter.d.ts.map +1 -1
  32. package/dist/agents/planners/adapter.js +13 -20
  33. package/dist/agents/planners/adapter.js.map +1 -1
  34. package/dist/agents/planners/handler.d.ts.map +1 -1
  35. package/dist/agents/planners/handler.js +44 -55
  36. package/dist/agents/planners/handler.js.map +1 -1
  37. package/dist/agents/planners/prompts.d.ts +6 -5
  38. package/dist/agents/planners/prompts.d.ts.map +1 -1
  39. package/dist/agents/planners/prompts.js +32 -18
  40. package/dist/agents/planners/prompts.js.map +1 -1
  41. package/dist/agents/planners/types.d.ts +8 -12
  42. package/dist/agents/planners/types.d.ts.map +1 -1
  43. package/dist/agents/prompt-utils.d.ts +2 -0
  44. package/dist/agents/prompt-utils.d.ts.map +1 -1
  45. package/dist/agents/prompt-utils.js +5 -0
  46. package/dist/agents/prompt-utils.js.map +1 -1
  47. package/dist/agents/reviewers/adapter.d.ts.map +1 -1
  48. package/dist/agents/reviewers/adapter.js +6 -2
  49. package/dist/agents/reviewers/adapter.js.map +1 -1
  50. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  51. package/dist/agents/reviewers/handler.js +22 -7
  52. package/dist/agents/reviewers/handler.js.map +1 -1
  53. package/dist/agents/reviewers/prompts.d.ts +4 -4
  54. package/dist/agents/reviewers/prompts.d.ts.map +1 -1
  55. package/dist/agents/reviewers/prompts.js +43 -23
  56. package/dist/agents/reviewers/prompts.js.map +1 -1
  57. package/dist/agents/reviewers/types.d.ts +7 -4
  58. package/dist/agents/reviewers/types.d.ts.map +1 -1
  59. package/dist/agents/reviewers/types.js.map +1 -1
  60. package/dist/agents/runner.d.ts +4 -4
  61. package/dist/agents/runner.d.ts.map +1 -1
  62. package/dist/agents/runner.js +13 -3
  63. package/dist/agents/runner.js.map +1 -1
  64. package/dist/crosscheck/coordinator.d.ts.map +1 -1
  65. package/dist/crosscheck/coordinator.js +1 -0
  66. package/dist/crosscheck/coordinator.js.map +1 -1
  67. package/dist/crosscheck/live-agent-session.d.ts +3 -0
  68. package/dist/crosscheck/live-agent-session.d.ts.map +1 -1
  69. package/dist/crosscheck/live-agent-session.js +12 -2
  70. package/dist/crosscheck/live-agent-session.js.map +1 -1
  71. package/dist/flow/artifacts.d.ts +8 -1
  72. package/dist/flow/artifacts.d.ts.map +1 -1
  73. package/dist/flow/artifacts.js +82 -0
  74. package/dist/flow/artifacts.js.map +1 -1
  75. package/dist/flow/built-in/default-factory.d.ts.map +1 -1
  76. package/dist/flow/built-in/default-factory.js +0 -2
  77. package/dist/flow/built-in/default-factory.js.map +1 -1
  78. package/dist/flow/executor.d.ts +1 -2
  79. package/dist/flow/executor.d.ts.map +1 -1
  80. package/dist/flow/executor.js +25 -29
  81. package/dist/flow/executor.js.map +1 -1
  82. package/dist/flow/non-default-feedback.d.ts +14 -0
  83. package/dist/flow/non-default-feedback.d.ts.map +1 -0
  84. package/dist/flow/non-default-feedback.js +45 -0
  85. package/dist/flow/non-default-feedback.js.map +1 -0
  86. package/dist/flow/types.d.ts +11 -5
  87. package/dist/flow/types.d.ts.map +1 -1
  88. package/dist/flow/types.js +1 -2
  89. package/dist/flow/types.js.map +1 -1
  90. package/dist/managed-spec.d.ts +2 -0
  91. package/dist/managed-spec.d.ts.map +1 -1
  92. package/dist/managed-spec.js +22 -0
  93. package/dist/managed-spec.js.map +1 -1
  94. package/dist/offscreen/agent-viewer.d.ts +4 -1
  95. package/dist/offscreen/agent-viewer.d.ts.map +1 -1
  96. package/dist/offscreen/agent-viewer.js +58 -2
  97. package/dist/offscreen/agent-viewer.js.map +1 -1
  98. package/dist/offscreen/controller.d.ts +1 -1
  99. package/dist/offscreen/controller.d.ts.map +1 -1
  100. package/dist/offscreen/controller.js.map +1 -1
  101. package/dist/offscreen/fork.d.ts +2 -1
  102. package/dist/offscreen/fork.d.ts.map +1 -1
  103. package/dist/offscreen/fork.js +11 -2
  104. package/dist/offscreen/fork.js.map +1 -1
  105. package/dist/orchestrator.d.ts +1 -2
  106. package/dist/orchestrator.d.ts.map +1 -1
  107. package/dist/orchestrator.js +5 -10
  108. package/dist/orchestrator.js.map +1 -1
  109. package/dist/prompts.d.ts +0 -16
  110. package/dist/prompts.d.ts.map +1 -1
  111. package/dist/prompts.js +0 -35
  112. package/dist/prompts.js.map +1 -1
  113. package/dist/providers/base-completion.d.ts +12 -2
  114. package/dist/providers/base-completion.d.ts.map +1 -1
  115. package/dist/providers/base-completion.js +111 -2
  116. package/dist/providers/base-completion.js.map +1 -1
  117. package/dist/providers/claude/completion.d.ts +3 -1
  118. package/dist/providers/claude/completion.d.ts.map +1 -1
  119. package/dist/providers/claude/completion.js +40 -4
  120. package/dist/providers/claude/completion.js.map +1 -1
  121. package/dist/providers/claude/session.d.ts +1 -32
  122. package/dist/providers/claude/session.d.ts.map +1 -1
  123. package/dist/providers/claude/session.js +1 -138
  124. package/dist/providers/claude/session.js.map +1 -1
  125. package/dist/providers/claude/strategy.d.ts.map +1 -1
  126. package/dist/providers/claude/strategy.js +3 -1
  127. package/dist/providers/claude/strategy.js.map +1 -1
  128. package/dist/providers/codex/completion.d.ts +3 -1
  129. package/dist/providers/codex/completion.d.ts.map +1 -1
  130. package/dist/providers/codex/completion.js +36 -5
  131. package/dist/providers/codex/completion.js.map +1 -1
  132. package/dist/providers/codex/session.d.ts +1 -1
  133. package/dist/providers/codex/session.d.ts.map +1 -1
  134. package/dist/providers/codex/session.js +1 -1
  135. package/dist/providers/codex/session.js.map +1 -1
  136. package/dist/providers/codex/strategy.d.ts.map +1 -1
  137. package/dist/providers/codex/strategy.js +3 -1
  138. package/dist/providers/codex/strategy.js.map +1 -1
  139. package/dist/providers/completion-gate.d.ts +14 -0
  140. package/dist/providers/completion-gate.d.ts.map +1 -0
  141. package/dist/providers/completion-gate.js +36 -0
  142. package/dist/providers/completion-gate.js.map +1 -0
  143. package/dist/providers/copilot/observation.d.ts +2 -3
  144. package/dist/providers/copilot/observation.d.ts.map +1 -1
  145. package/dist/providers/copilot/observation.js +28 -25
  146. package/dist/providers/copilot/observation.js.map +1 -1
  147. package/dist/providers/copilot/session.d.ts +0 -33
  148. package/dist/providers/copilot/session.d.ts.map +1 -1
  149. package/dist/providers/copilot/session.js +0 -149
  150. package/dist/providers/copilot/session.js.map +1 -1
  151. package/dist/providers/copilot/trust.js +1 -1
  152. package/dist/providers/copilot/trust.js.map +1 -1
  153. package/dist/providers/types.d.ts +9 -14
  154. package/dist/providers/types.d.ts.map +1 -1
  155. package/dist/providers/types.js.map +1 -1
  156. package/dist/session/restore.d.ts +2 -1
  157. package/dist/session/restore.d.ts.map +1 -1
  158. package/dist/session/restore.js +26 -3
  159. package/dist/session/restore.js.map +1 -1
  160. package/dist/session/session-store.d.ts.map +1 -1
  161. package/dist/session/session-store.js +9 -2
  162. package/dist/session/session-store.js.map +1 -1
  163. package/dist/terminal/color-negotiation.d.ts +37 -0
  164. package/dist/terminal/color-negotiation.d.ts.map +1 -0
  165. package/dist/terminal/color-negotiation.js +154 -0
  166. package/dist/terminal/color-negotiation.js.map +1 -0
  167. package/dist/terminal/color-protocol.d.ts +36 -0
  168. package/dist/terminal/color-protocol.d.ts.map +1 -0
  169. package/dist/terminal/color-protocol.js +88 -0
  170. package/dist/terminal/color-protocol.js.map +1 -0
  171. package/dist/terminal/host-input-mode.d.ts.map +1 -1
  172. package/dist/terminal/host-input-mode.js +6 -2
  173. package/dist/terminal/host-input-mode.js.map +1 -1
  174. package/dist/terminal/host.d.ts +15 -4
  175. package/dist/terminal/host.d.ts.map +1 -1
  176. package/dist/terminal/host.js +158 -59
  177. package/dist/terminal/host.js.map +1 -1
  178. package/dist/terminal/input-session.d.ts +23 -0
  179. package/dist/terminal/input-session.d.ts.map +1 -0
  180. package/dist/terminal/input-session.js +97 -0
  181. package/dist/terminal/input-session.js.map +1 -0
  182. package/dist/terminal/key-event-source.d.ts +5 -1
  183. package/dist/terminal/key-event-source.d.ts.map +1 -1
  184. package/dist/terminal/key-event-source.js +1 -0
  185. package/dist/terminal/key-event-source.js.map +1 -1
  186. package/dist/terminal/layout.d.ts +7 -4
  187. package/dist/terminal/layout.d.ts.map +1 -1
  188. package/dist/terminal/layout.js +5 -3
  189. package/dist/terminal/layout.js.map +1 -1
  190. package/dist/terminal/output.d.ts +9 -2
  191. package/dist/terminal/output.d.ts.map +1 -1
  192. package/dist/terminal/output.js +13 -3
  193. package/dist/terminal/output.js.map +1 -1
  194. package/dist/terminal/stdin-byte-source.d.ts +13 -8
  195. package/dist/terminal/stdin-byte-source.d.ts.map +1 -1
  196. package/dist/terminal/stdin-byte-source.js +84 -40
  197. package/dist/terminal/stdin-byte-source.js.map +1 -1
  198. package/dist/terminal/virtual-terminal.d.ts +2 -0
  199. package/dist/terminal/virtual-terminal.d.ts.map +1 -1
  200. package/dist/terminal/virtual-terminal.js +17 -0
  201. package/dist/terminal/virtual-terminal.js.map +1 -1
  202. package/dist/terminal-input.d.ts +19 -2
  203. package/dist/terminal-input.d.ts.map +1 -1
  204. package/dist/terminal-input.js +162 -6
  205. package/dist/terminal-input.js.map +1 -1
  206. package/dist/user/curate-handler.d.ts +1 -5
  207. package/dist/user/curate-handler.d.ts.map +1 -1
  208. package/dist/user/curate-handler.js +32 -69
  209. package/dist/user/curate-handler.js.map +1 -1
  210. package/dist/user/handler.d.ts.map +1 -1
  211. package/dist/user/handler.js +18 -1
  212. package/dist/user/handler.js.map +1 -1
  213. package/dist/user/host-prompt.d.ts.map +1 -1
  214. package/dist/user/host-prompt.js +5 -4
  215. package/dist/user/host-prompt.js.map +1 -1
  216. package/dist/user/prompt.d.ts +3 -0
  217. package/dist/user/prompt.d.ts.map +1 -1
  218. package/dist/user/prompt.js.map +1 -1
  219. package/dist/user/review-feedback.d.ts +43 -0
  220. package/dist/user/review-feedback.d.ts.map +1 -0
  221. package/dist/user/review-feedback.js +184 -0
  222. package/dist/user/review-feedback.js.map +1 -0
  223. package/dist/user/review-plan-pane.d.ts +5 -0
  224. package/dist/user/review-plan-pane.d.ts.map +1 -0
  225. package/dist/user/review-plan-pane.js +26 -0
  226. package/dist/user/review-plan-pane.js.map +1 -0
  227. package/package.json +2 -2
@@ -13,7 +13,8 @@
13
13
  * reads the buffer when it composes a frame and renders messages in
14
14
  * the parent-owned region above the status bar.
15
15
  */
16
- import { dim, reset, cyan, yellow, red } from "../ansi.js";
16
+ import { dim, reset, cyan, yellow, red, visibleLength } from "../ansi.js";
17
+ import { softWrapLine } from "../text-editing/soft-wrap.js";
17
18
  /**
18
19
  * Console-backed sink used outside the orchestration host (non-TTY,
19
20
  * programmatic callers). Mirrors the legacy `logPhase()` formatting.
@@ -55,8 +56,8 @@ export class BufferOrchestrationOutput {
55
56
  phase(phase, message) {
56
57
  this.push({ kind: "phase", phase, text: message, ts: Date.now() });
57
58
  }
58
- warn(message) {
59
- this.push({ kind: "warn", text: message, ts: Date.now() });
59
+ warn(message, options) {
60
+ this.push({ kind: "warn", text: message, ...(options?.wrap && { wrap: true }), ts: Date.now() });
60
61
  }
61
62
  error(message) {
62
63
  this.push({ kind: "error", text: message, ts: Date.now() });
@@ -104,4 +105,13 @@ export function formatOrchestrationMessage(msg) {
104
105
  return msg.text;
105
106
  }
106
107
  }
108
+ export function formatOrchestrationMessageRows(msg, columns) {
109
+ if (!msg.wrap)
110
+ return [formatOrchestrationMessage(msg)];
111
+ const prefixWidth = visibleLength(formatOrchestrationMessage({ ...msg, text: "" }));
112
+ // Very narrow terminals cannot fit the tag; keep the warning body readable instead.
113
+ const includeTag = columns > prefixWidth;
114
+ const width = Math.max(1, columns - (includeTag ? prefixWidth : 0));
115
+ return msg.text.split("\n").flatMap((paragraph) => softWrapLine(paragraph, width).map(({ text }) => includeTag ? formatOrchestrationMessage({ ...msg, text }) : `${yellow}${text}${reset}`));
116
+ }
107
117
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/terminal/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/terminal/output.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,32 @@
1
- import { type TerminalKey } from "../terminal-input.js";
1
+ import type { TerminalKey } from "../terminal-input.js";
2
+ import { TerminalInputSession } from "./input-session.js";
3
+ import type { InputClock } from "./color-protocol.js";
2
4
  import type { KeyEventSource, ResizeSize } from "./key-event-source.js";
3
5
  interface StdinByteSourceOptions {
4
6
  enableRightClickPaste?: boolean;
7
+ inputSession?: TerminalInputSession;
8
+ clock?: InputClock;
5
9
  }
6
10
  /**
7
11
  * Default `KeyEventSource`. Owns raw-mode on its injected stdin and
8
12
  * optional VT input-mode negotiation on its injected stdout.
9
13
  *
10
- * Internally drives a `TerminalKeyParser`; consumers only see the
11
- * structured `TerminalKey[]` stream — the byte-level parser is no
12
- * longer part of any consumer's surface.
14
+ * A private start owns a fresh input session through stop. Hosted sources
15
+ * borrow only a consumer lease; their owner's parser survives handoffs.
13
16
  */
14
17
  export declare class StdinByteSource implements KeyEventSource {
15
18
  private readonly stdin;
16
19
  private readonly out;
20
+ private readonly configuredShiftEnterBytes?;
17
21
  private readonly options;
18
- private readonly parser;
19
22
  private readonly subscribers;
20
- private dataListener;
23
+ private readonly ownership;
24
+ private activation;
21
25
  private disableRightClickPasteMouseMode;
22
26
  private prevRawMode;
23
- private started;
24
- constructor(stdin: NodeJS.ReadStream, out?: NodeJS.WritableStream, configuredShiftEnterBytes?: Buffer, options?: StdinByteSourceOptions);
27
+ private modesEnabled;
28
+ private rawAcquired;
29
+ constructor(stdin: NodeJS.ReadStream, out?: NodeJS.WritableStream, configuredShiftEnterBytes?: Buffer | undefined, options?: StdinByteSourceOptions);
25
30
  start(): void;
26
31
  stop(): void;
27
32
  onEvents(cb: (events: TerminalKey[]) => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"stdin-byte-source.d.ts","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE,UAAU,sBAAsB;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,cAAc;IASlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,+BAA+B,CAA2B;IAClE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAGL,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC5D,yBAAyB,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,sBAA2B;IAMvD,KAAK,IAAI,IAAI;IAqBb,IAAI,IAAI,IAAI;IAqBZ,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAOrD,OAAO,CAAC,MAAM;CAcf"}
1
+ {"version":3,"file":"stdin-byte-source.d.ts","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAmB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE,UAAU,sBAAsB;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,cAAc;IAUlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4E;IACtG,OAAO,CAAC,UAAU,CAAmE;IACrF,OAAO,CAAC,+BAA+B,CAA2B;IAClE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAGT,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC3C,yBAAyB,CAAC,EAAE,MAAM,YAAA,EAClC,OAAO,GAAE,sBAA2B;IAWvD,KAAK,IAAI,IAAI;IA8Bb,IAAI,IAAI,IAAI;IA8BZ,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IASzD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAOrD,OAAO,CAAC,MAAM;CAiBf"}
@@ -1,75 +1,114 @@
1
- import { TerminalKeyParser, } from "../terminal-input.js";
1
+ import { TerminalInputSession } from "./input-session.js";
2
2
  import { disableHostInputModes, enableHostInputModes, enableRightClickPasteMouseMode, } from "./host-input-mode.js";
3
3
  /**
4
4
  * Default `KeyEventSource`. Owns raw-mode on its injected stdin and
5
5
  * optional VT input-mode negotiation on its injected stdout.
6
6
  *
7
- * Internally drives a `TerminalKeyParser`; consumers only see the
8
- * structured `TerminalKey[]` stream — the byte-level parser is no
9
- * longer part of any consumer's surface.
7
+ * A private start owns a fresh input session through stop. Hosted sources
8
+ * borrow only a consumer lease; their owner's parser survives handoffs.
10
9
  */
11
10
  export class StdinByteSource {
12
11
  stdin;
13
12
  out;
13
+ configuredShiftEnterBytes;
14
14
  options;
15
- parser;
16
15
  subscribers = new Set();
17
- dataListener;
16
+ ownership;
17
+ activation;
18
18
  disableRightClickPasteMouseMode;
19
19
  prevRawMode = false;
20
- started = false;
20
+ modesEnabled = false;
21
+ rawAcquired = false;
21
22
  constructor(stdin, out = process.stdout, configuredShiftEnterBytes, options = {}) {
22
23
  this.stdin = stdin;
23
24
  this.out = out;
25
+ this.configuredShiftEnterBytes = configuredShiftEnterBytes;
24
26
  this.options = options;
25
- this.parser = new TerminalKeyParser(50, configuredShiftEnterBytes);
26
- this.parser.onDeferredKeys((keys) => this.fanOut(keys));
27
+ if (options.inputSession && options.inputSession.stdin !== stdin) {
28
+ throw new Error("Borrowed terminal input session uses a different stream");
29
+ }
30
+ options.inputSession?.assertLive();
31
+ this.ownership = options.inputSession
32
+ ? { kind: "borrowed", session: options.inputSession }
33
+ : { kind: "private" };
27
34
  }
28
35
  start() {
29
- if (this.started)
36
+ if (this.activation)
30
37
  return;
31
- this.started = true;
32
- if (this.stdin.isTTY) {
33
- this.prevRawMode = this.stdin.isRaw === true;
34
- this.stdin.setRawMode(true);
35
- enableHostInputModes(this.out);
36
- if (this.options.enableRightClickPaste === true) {
37
- this.disableRightClickPasteMouseMode = enableRightClickPasteMouseMode(this.out);
38
+ const session = this.ownership.kind === "borrowed" ? this.ownership.session
39
+ : new TerminalInputSession(this.stdin, this.configuredShiftEnterBytes, this.options.clock);
40
+ try {
41
+ const lease = session.acquire((events) => this.fanOut(events));
42
+ this.activation = { session, lease };
43
+ if (this.stdin.isTTY) {
44
+ this.prevRawMode = this.stdin.isRaw === true;
45
+ this.rawAcquired = true;
46
+ this.stdin.setRawMode(true);
47
+ enableHostInputModes(this.out);
48
+ this.modesEnabled = true;
49
+ if (this.options.enableRightClickPaste === true) {
50
+ this.disableRightClickPasteMouseMode = enableRightClickPasteMouseMode(this.out);
51
+ }
38
52
  }
39
- this.stdin.resume();
53
+ lease.setEnabled(this.subscribers.size > 0);
54
+ }
55
+ catch (error) {
56
+ try {
57
+ this.stop();
58
+ }
59
+ catch (cleanupError) {
60
+ throw new AggregateError([error, cleanupError], "Terminal input start and cleanup failed");
61
+ }
62
+ finally {
63
+ if (this.ownership.kind === "private")
64
+ session.dispose();
65
+ }
66
+ throw error;
40
67
  }
41
- this.dataListener = (chunk) => {
42
- const events = this.parser.parseChunk(chunk);
43
- if (events.length > 0)
44
- this.fanOut(events);
45
- };
46
- this.stdin.on("data", this.dataListener);
47
68
  }
48
69
  stop() {
49
- if (!this.started)
70
+ const activation = this.activation;
71
+ if (!activation)
50
72
  return;
51
- this.started = false;
52
- if (this.dataListener) {
53
- this.stdin.removeListener("data", this.dataListener);
54
- this.dataListener = undefined;
73
+ this.activation = undefined;
74
+ try {
75
+ activation.lease.release();
55
76
  }
56
- this.parser.cancelPendingEscape();
57
- if (this.stdin.isTTY) {
58
- this.disableRightClickPasteMouseMode?.();
59
- this.disableRightClickPasteMouseMode = undefined;
60
- disableHostInputModes(this.out);
77
+ finally {
61
78
  try {
62
- this.stdin.setRawMode(this.prevRawMode);
79
+ try {
80
+ this.disableRightClickPasteMouseMode?.();
81
+ }
82
+ finally {
83
+ this.disableRightClickPasteMouseMode = undefined;
84
+ if (this.modesEnabled) {
85
+ this.modesEnabled = false;
86
+ disableHostInputModes(this.out);
87
+ }
88
+ }
89
+ }
90
+ finally {
91
+ try {
92
+ if (this.rawAcquired) {
93
+ this.rawAcquired = false;
94
+ this.stdin.setRawMode(this.prevRawMode);
95
+ }
96
+ }
97
+ finally {
98
+ if (this.ownership.kind === "private")
99
+ activation.session.dispose();
100
+ }
63
101
  }
64
- catch { /* ignore */ }
65
- }
66
- else {
67
- this.disableRightClickPasteMouseMode = undefined;
68
102
  }
69
103
  }
70
104
  onEvents(cb) {
71
105
  this.subscribers.add(cb);
72
- return () => { this.subscribers.delete(cb); };
106
+ this.activation?.lease.setEnabled(true);
107
+ return () => {
108
+ this.subscribers.delete(cb);
109
+ if (this.subscribers.size === 0)
110
+ this.activation?.lease.setEnabled(false);
111
+ };
73
112
  }
74
113
  onResize(_cb) {
75
114
  // libuv refreshes stdout.columns/stdout.rows and fires the stdout
@@ -78,11 +117,16 @@ export class StdinByteSource {
78
117
  return () => { };
79
118
  }
80
119
  fanOut(events) {
120
+ const activation = this.activation;
121
+ if (!activation)
122
+ return;
81
123
  // Snapshot only when multiple subscribers exist so a callback that
82
124
  // unsubscribes itself does not perturb iteration. The typical single
83
125
  // host subscriber goes through the direct path without an array copy.
84
126
  if (this.subscribers.size > 1) {
85
127
  for (const cb of Array.from(this.subscribers)) {
128
+ if (this.activation !== activation)
129
+ break;
86
130
  try {
87
131
  cb(events);
88
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stdin-byte-source.js","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stdin-byte-source.js","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { IBuffer, IBufferCell, IMarker } from "@xterm/headless";
2
+ import { type ColorQuery } from "./color-protocol.js";
2
3
  export interface VirtualTerminalOptions {
3
4
  onOscClipboard?: (data: string) => void;
5
+ onColorQuery?: (query: ColorQuery) => void;
4
6
  }
5
7
  /**
6
8
  * Wraps `@xterm/headless` so the rest of the host doesn't need to
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-terminal.d.ts","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,OAAO,EAER,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B;IAkCzE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQ7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0DAA0D;IAC1D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,oFAAoF;IACpF,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,yEAAyE;IACzE,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,oFAAoF;IACpF,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,wDAAwD;IACxD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0DAA0D;IAC1D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gFAAgF;IAChF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8DAA8D;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,8EAA8E;IAC9E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,uDAAuD;IACvD,WAAW,IAAI,IAAI;IAInB,mDAAmD;IACnD,cAAc,IAAI,IAAI;IAItB,2DAA2D;IAC3D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKnD,oFAAoF;IACpF,OAAO,IAAI,WAAW;IAItB,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"virtual-terminal.d.ts","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,OAAO,EAER,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIzE,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B;IAiDzE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQ7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0DAA0D;IAC1D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,oFAAoF;IACpF,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,yEAAyE;IACzE,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,oFAAoF;IACpF,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,wDAAwD;IACxD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0DAA0D;IAC1D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gFAAgF;IAChF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8DAA8D;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,8EAA8E;IAC9E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,uDAAuD;IACvD,WAAW,IAAI,IAAI;IAInB,mDAAmD;IACnD,cAAc,IAAI,IAAI;IAItB,2DAA2D;IAC3D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKnD,oFAAoF;IACpF,OAAO,IAAI,WAAW;IAItB,OAAO,IAAI,IAAI;CAGhB"}
@@ -1,5 +1,6 @@
1
1
  import xtermHeadless from "@xterm/headless";
2
2
  import { parseOsc52 } from "./osc52.js";
3
+ import { parseColorQueries } from "./color-protocol.js";
3
4
  const { Terminal } = xtermHeadless;
4
5
  /**
5
6
  * Wraps `@xterm/headless` so the rest of the host doesn't need to
@@ -41,6 +42,22 @@ export class VirtualTerminal {
41
42
  }
42
43
  return false;
43
44
  });
45
+ for (const command of [4, 10, 11]) {
46
+ this.term.parser.registerOscHandler(command, (data) => {
47
+ for (const query of parseColorQueries(command, data))
48
+ opts.onColorQuery?.(query);
49
+ return true;
50
+ });
51
+ }
52
+ for (const command of [104, 110, 111]) {
53
+ this.term.parser.registerOscHandler(command, () => true);
54
+ }
55
+ this.term.parser.registerCsiHandler({ prefix: "?", final: "n" }, (params) => {
56
+ if (params.length !== 1 || params[0] !== 996)
57
+ return false;
58
+ opts.onColorQuery?.({ kind: "appearance" });
59
+ return true;
60
+ });
44
61
  const onOscClipboard = opts.onOscClipboard;
45
62
  if (onOscClipboard) {
46
63
  this.term.parser.registerOscHandler(52, (data) => {
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-terminal.js","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtual-terminal.js","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAO5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAEzE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAiD,CAAC;AAOvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,eAAe;IACT,IAAI,CAAgB;IAC7B,kBAAkB,GAAG,IAAI,CAAC;IAElC,YAAY,IAAY,EAAE,IAAY,EAAE,OAA+B,EAAE;QACvE,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;YACvB,gBAAgB,EAAE,IAAI;YACtB,sDAAsD;YACtD,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACjC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAClC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACpD,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;oBAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjF,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrD,cAAc,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAyB,EAAE,QAAqB;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,0DAA0D;IAC1D,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,oFAAoF;IACpF,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,gDAAgD;IAChD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;IACtD,CAAC;IAED,yEAAyE;IACzE,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAC5C,CAAC;IAED,oFAAoF;IACpF,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,0DAA0D;IAC1D,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,gFAAgF;IAChF,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAa;QACtB,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,8DAA8D;IAC9D,aAAa,CAAC,KAAa;QACzB,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,8EAA8E;IAC9E,WAAW,CAAC,SAAiB;QAC3B,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,uDAAuD;IACvD,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAED,mDAAmD;IACnD,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC7B,CAAC;IAED,2DAA2D;IAC3D,cAAc,CAAC,MAAc;QAC3B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,oFAAoF;IACpF,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -2,13 +2,15 @@
2
2
  * Shared terminal input parser — bytes → low-level key identities.
3
3
  *
4
4
  * This module owns the byte-level state machine (normal/esc/csi/utf8),
5
- * kitty keyboard protocol parsing, and escape timeout.
5
+ * kitty keyboard protocol parsing, escape timeout and bounded color-report
6
+ * separation. Covered reports use a distinct callback, never key events.
6
7
  * It produces {@link TerminalKey} events with no domain semantics.
7
8
  *
8
9
  * Consumers wrap this via composition and map TerminalKey → their own domain
9
10
  * event types. EmacsInputParser is the shared readline-style mapper for
10
11
  * prompt and TUI text-editing surfaces.
11
12
  */
13
+ import { type ColorReport, type InputClock } from "./terminal/color-protocol.js";
12
14
  export type TerminalKey = {
13
15
  kind: "printable";
14
16
  char: string;
@@ -59,6 +61,7 @@ export type TerminalKey = {
59
61
  export declare class TerminalKeyParser {
60
62
  private readonly escapeTimeoutMs;
61
63
  private readonly configuredShiftEnterBytes?;
64
+ private readonly clock;
62
65
  private state;
63
66
  private csiParams;
64
67
  private legacyMouseBytes;
@@ -70,11 +73,25 @@ export declare class TerminalKeyParser {
70
73
  private pasteEndMatch;
71
74
  private configuredShiftEnterMatch;
72
75
  private configuredShiftEnterTimer;
73
- constructor(escapeTimeoutMs?: number, configuredShiftEnterBytes?: Buffer | undefined);
76
+ private reportCandidate;
77
+ private reportFrame;
78
+ private reportDeadline;
79
+ private reportTimer;
80
+ private reportCallback;
81
+ private disposed;
82
+ constructor(escapeTimeoutMs?: number, configuredShiftEnterBytes?: Buffer | undefined, clock?: InputClock);
83
+ onReport(cb: (report: ColorReport) => void): void;
84
+ dispose(): void;
74
85
  onDeferredKeys(cb: (keys: TerminalKey[]) => void): void;
75
86
  cancelPendingEscape(): void;
76
87
  parseChunk(chunk: Buffer): TerminalKey[];
77
88
  private processByte;
89
+ private armReportTimer;
90
+ private clearReport;
91
+ private expireReport;
92
+ private flushKeyboardPrefix;
93
+ private consumeReportByte;
94
+ private processKeyboardByte;
78
95
  private processByteWithoutConfiguredShiftEnter;
79
96
  private consumeConfiguredShiftEnterByte;
80
97
  private startConfiguredShiftEnterTimer;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-input.d.ts","sourceRoot":"","sources":["../src/terminal-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkBnC,qBAAa,iBAAiB;IAc1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAd7C,OAAO,CAAC,KAAK,CAAwE;IACrF,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,yBAAyB,CAAgB;IACjD,OAAO,CAAC,yBAAyB,CAA4C;gBAG1D,eAAe,SAAK,EACpB,yBAAyB,CAAC,EAAE,MAAM,YAAA;IAGrD,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI;IAIvD,mBAAmB,IAAI,IAAI;IAQ3B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAqBxC,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,sCAAsC;IA0G9C,OAAO,CAAC,+BAA+B;IAoCvC,OAAO,CAAC,8BAA8B;IAkBtC,OAAO,CAAC,iCAAiC;IAQzC,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAiJjB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"terminal-input.d.ts","sourceRoot":"","sources":["../src/terminal-input.ts"],"names":[],"mappings":"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"}