poly-weaver 0.5.0 → 0.6.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 (146) hide show
  1. package/dist/agents/implementors/handler.d.ts.map +1 -1
  2. package/dist/agents/implementors/handler.js +2 -1
  3. package/dist/agents/implementors/handler.js.map +1 -1
  4. package/dist/agents/planners/handler.d.ts.map +1 -1
  5. package/dist/agents/planners/handler.js +2 -1
  6. package/dist/agents/planners/handler.js.map +1 -1
  7. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  8. package/dist/agents/reviewers/handler.js +9 -2
  9. package/dist/agents/reviewers/handler.js.map +1 -1
  10. package/dist/agents/runner.d.ts +40 -1
  11. package/dist/agents/runner.d.ts.map +1 -1
  12. package/dist/agents/runner.js +213 -14
  13. package/dist/agents/runner.js.map +1 -1
  14. package/dist/agents/simplifiers/handler.d.ts.map +1 -1
  15. package/dist/agents/simplifiers/handler.js +2 -1
  16. package/dist/agents/simplifiers/handler.js.map +1 -1
  17. package/dist/ansi.d.ts +26 -0
  18. package/dist/ansi.d.ts.map +1 -1
  19. package/dist/ansi.js +26 -0
  20. package/dist/ansi.js.map +1 -1
  21. package/dist/cli.js +46 -16
  22. package/dist/cli.js.map +1 -1
  23. package/dist/flow/built-in/default.js +1 -1
  24. package/dist/flow/built-in/default.js.map +1 -1
  25. package/dist/flow/built-in/default.ts +1 -1
  26. package/dist/flow/built-in/why-so-serious.js +1 -1
  27. package/dist/flow/built-in/why-so-serious.js.map +1 -1
  28. package/dist/flow/executor.d.ts.map +1 -1
  29. package/dist/flow/executor.js +7 -2
  30. package/dist/flow/executor.js.map +1 -1
  31. package/dist/flow/types.d.ts +5 -0
  32. package/dist/flow/types.d.ts.map +1 -1
  33. package/dist/flow/types.js.map +1 -1
  34. package/dist/orchestrator.d.ts +10 -4
  35. package/dist/orchestrator.d.ts.map +1 -1
  36. package/dist/orchestrator.js +34 -14
  37. package/dist/orchestrator.js.map +1 -1
  38. package/dist/providers/claude/session.d.ts +3 -1
  39. package/dist/providers/claude/session.d.ts.map +1 -1
  40. package/dist/providers/claude/session.js +10 -2
  41. package/dist/providers/claude/session.js.map +1 -1
  42. package/dist/providers/codex/session.d.ts +6 -3
  43. package/dist/providers/codex/session.d.ts.map +1 -1
  44. package/dist/providers/codex/session.js +24 -4
  45. package/dist/providers/codex/session.js.map +1 -1
  46. package/dist/providers/copilot/session.d.ts +3 -1
  47. package/dist/providers/copilot/session.d.ts.map +1 -1
  48. package/dist/providers/copilot/session.js +15 -2
  49. package/dist/providers/copilot/session.js.map +1 -1
  50. package/dist/providers/types.d.ts +14 -2
  51. package/dist/providers/types.d.ts.map +1 -1
  52. package/dist/providers/types.js.map +1 -1
  53. package/dist/pty/exit.d.ts +13 -5
  54. package/dist/pty/exit.d.ts.map +1 -1
  55. package/dist/pty/exit.js +19 -19
  56. package/dist/pty/exit.js.map +1 -1
  57. package/dist/pty/spawn.d.ts +12 -6
  58. package/dist/pty/spawn.d.ts.map +1 -1
  59. package/dist/pty/spawn.js +22 -70
  60. package/dist/pty/spawn.js.map +1 -1
  61. package/dist/pty/types.d.ts +12 -3
  62. package/dist/pty/types.d.ts.map +1 -1
  63. package/dist/session/locator.d.ts +23 -2
  64. package/dist/session/locator.d.ts.map +1 -1
  65. package/dist/session/locator.js +67 -4
  66. package/dist/session/locator.js.map +1 -1
  67. package/dist/status-bar.d.ts +21 -1
  68. package/dist/status-bar.d.ts.map +1 -1
  69. package/dist/status-bar.js +109 -34
  70. package/dist/status-bar.js.map +1 -1
  71. package/dist/terminal/cleanup.d.ts +21 -0
  72. package/dist/terminal/cleanup.d.ts.map +1 -0
  73. package/dist/terminal/cleanup.js +22 -0
  74. package/dist/terminal/cleanup.js.map +1 -0
  75. package/dist/terminal/host.d.ts +244 -0
  76. package/dist/terminal/host.d.ts.map +1 -0
  77. package/dist/terminal/host.js +642 -0
  78. package/dist/terminal/host.js.map +1 -0
  79. package/dist/terminal/input-router.d.ts +146 -0
  80. package/dist/terminal/input-router.d.ts.map +1 -0
  81. package/dist/terminal/input-router.js +426 -0
  82. package/dist/terminal/input-router.js.map +1 -0
  83. package/dist/terminal/layout.d.ts +55 -0
  84. package/dist/terminal/layout.d.ts.map +1 -0
  85. package/dist/terminal/layout.js +51 -0
  86. package/dist/terminal/layout.js.map +1 -0
  87. package/dist/terminal/output.d.ts +83 -0
  88. package/dist/terminal/output.d.ts.map +1 -0
  89. package/dist/terminal/output.js +107 -0
  90. package/dist/terminal/output.js.map +1 -0
  91. package/dist/terminal/render.d.ts +36 -0
  92. package/dist/terminal/render.d.ts.map +1 -0
  93. package/dist/terminal/render.js +233 -0
  94. package/dist/terminal/render.js.map +1 -0
  95. package/dist/terminal/virtual-terminal.d.ts +54 -0
  96. package/dist/terminal/virtual-terminal.d.ts.map +1 -0
  97. package/dist/terminal/virtual-terminal.js +110 -0
  98. package/dist/terminal/virtual-terminal.js.map +1 -0
  99. package/dist/terminal-input.d.ts +10 -0
  100. package/dist/terminal-input.d.ts.map +1 -1
  101. package/dist/terminal-input.js +46 -0
  102. package/dist/terminal-input.js.map +1 -1
  103. package/dist/user/auto-curate-prompt.d.ts +17 -0
  104. package/dist/user/auto-curate-prompt.d.ts.map +1 -0
  105. package/dist/user/auto-curate-prompt.js +22 -0
  106. package/dist/user/auto-curate-prompt.js.map +1 -0
  107. package/dist/user/curate-handler.d.ts.map +1 -1
  108. package/dist/user/curate-handler.js +10 -2
  109. package/dist/user/curate-handler.js.map +1 -1
  110. package/dist/user/curate-prompt.d.ts +9 -7
  111. package/dist/user/curate-prompt.d.ts.map +1 -1
  112. package/dist/user/curate-prompt.js +2 -341
  113. package/dist/user/curate-prompt.js.map +1 -1
  114. package/dist/user/handler.d.ts +13 -1
  115. package/dist/user/handler.d.ts.map +1 -1
  116. package/dist/user/handler.js +27 -15
  117. package/dist/user/handler.js.map +1 -1
  118. package/dist/user/hard-wrap.d.ts +11 -0
  119. package/dist/user/hard-wrap.d.ts.map +1 -0
  120. package/dist/user/hard-wrap.js +44 -0
  121. package/dist/user/hard-wrap.js.map +1 -0
  122. package/dist/user/host-curate-prompt.d.ts +34 -0
  123. package/dist/user/host-curate-prompt.d.ts.map +1 -0
  124. package/dist/user/host-curate-prompt.js +453 -0
  125. package/dist/user/host-curate-prompt.js.map +1 -0
  126. package/dist/user/host-prompt.d.ts +21 -0
  127. package/dist/user/host-prompt.d.ts.map +1 -0
  128. package/dist/user/host-prompt.js +337 -0
  129. package/dist/user/host-prompt.js.map +1 -0
  130. package/dist/user/index.d.ts +3 -3
  131. package/dist/user/index.d.ts.map +1 -1
  132. package/dist/user/index.js +2 -2
  133. package/dist/user/index.js.map +1 -1
  134. package/dist/user/plan-pane.d.ts +18 -0
  135. package/dist/user/plan-pane.d.ts.map +1 -0
  136. package/dist/user/plan-pane.js +33 -0
  137. package/dist/user/plan-pane.js.map +1 -0
  138. package/dist/user/prompt.d.ts +25 -42
  139. package/dist/user/prompt.d.ts.map +1 -1
  140. package/dist/user/prompt.js +16 -278
  141. package/dist/user/prompt.js.map +1 -1
  142. package/dist/user/split-surface.d.ts +32 -0
  143. package/dist/user/split-surface.d.ts.map +1 -0
  144. package/dist/user/split-surface.js +66 -0
  145. package/dist/user/split-surface.js.map +1 -0
  146. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/pty/exit.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAiB,EACjB,WAAmB,EACnB,SAAS,GAAG,IAAI;IAEhB,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,aAAwD,CAAC;QAE7D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YACD,0BAA0B;YAC1B,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEtB,oEAAoE;QACpE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE1B,2DAA2D;QAC3D,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/pty/exit.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAiB,EACjB,WAAmB,EACnB,SAAS,GAAG,IAAI;IAEhB,MAAM,CAAC,SAAS,EAAE,CAAC;IACnB,MAAM,CAAC,cAAc,EAAE,CAAC;IAExB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,aAAwD,CAAC;QAE7D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,aAAa;gBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtC,wEAAwE;QACxE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE1B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,4 @@
1
1
  import type { PtyHandle } from "./types.js";
2
- export declare function setReservedRows(n: number): void;
3
- export declare function getReservedRows(): number;
4
- export declare function setDumpTrigger(cb: (() => void) | undefined): void;
5
2
  export interface SpawnOptions {
6
3
  command: string;
7
4
  args: string[];
@@ -9,13 +6,22 @@ export interface SpawnOptions {
9
6
  env?: Record<string, string>;
10
7
  cols?: number;
11
8
  rows?: number;
9
+ /**
10
+ * Compatibility flag retained from the previous transport API. Currently
11
+ * a no-op: the parent terminal host owns stdin and rendering, so the PTY
12
+ * transport never touches the real terminal regardless of this value.
13
+ * Left in place so existing call sites compile.
14
+ */
12
15
  interactive?: boolean;
13
16
  }
14
17
  /**
15
- * Spawn a PTY process and return a PtyHandle.
18
+ * Spawn a PTY process and return a `PtyHandle` wrapper.
16
19
  *
17
- * The PTY output is piped to process.stdout for TUI passthrough.
18
- * Stdin is gated by default user keystrokes are blocked until openGate() is called.
20
+ * This is now a transport-only primitive: it never writes child output
21
+ * to `process.stdout`, never registers a `data` listener on stdin, and
22
+ * never sets/restores raw mode. The orchestration terminal host owns
23
+ * the real terminal, attaches to PTY data via `onData`, and forwards
24
+ * user keystrokes back through `handle.write()`.
19
25
  */
20
26
  export declare function spawnPty(opts: SpawnOptions): PtyHandle;
21
27
  //# sourceMappingURL=spawn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAsB;AACtE,wBAAgB,eAAe,IAAI,MAAM,CAAyB;AAGlE,wBAAgB,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAEjE;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwCD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAwJtD"}
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAmGtD"}
package/dist/pty/spawn.js CHANGED
@@ -1,13 +1,5 @@
1
1
  import { execFileSync } from "node:child_process";
2
2
  import * as pty from "node-pty";
3
- import { DumpHotkeyDetector } from "../dump/hotkey.js";
4
- let reservedRows = 0;
5
- export function setReservedRows(n) { reservedRows = n; }
6
- export function getReservedRows() { return reservedRows; }
7
- let dumpTrigger;
8
- export function setDumpTrigger(cb) {
9
- dumpTrigger = cb;
10
- }
11
3
  /**
12
4
  * On Windows, node-pty's CreateProcess cannot launch .cmd/.bat shims or
13
5
  * WinGet app execution aliases directly. Resolve the command to a real
@@ -39,10 +31,13 @@ function resolveWindowsCommand(command, args) {
39
31
  }
40
32
  }
41
33
  /**
42
- * Spawn a PTY process and return a PtyHandle.
34
+ * Spawn a PTY process and return a `PtyHandle` wrapper.
43
35
  *
44
- * The PTY output is piped to process.stdout for TUI passthrough.
45
- * Stdin is gated by default user keystrokes are blocked until openGate() is called.
36
+ * This is now a transport-only primitive: it never writes child output
37
+ * to `process.stdout`, never registers a `data` listener on stdin, and
38
+ * never sets/restores raw mode. The orchestration terminal host owns
39
+ * the real terminal, attaches to PTY data via `onData`, and forwards
40
+ * user keystrokes back through `handle.write()`.
46
41
  */
47
42
  export function spawnPty(opts) {
48
43
  const resolved = process.platform === "win32"
@@ -53,7 +48,7 @@ export function spawnPty(opts) {
53
48
  const proc = pty.spawn(resolved.command, resolved.args, {
54
49
  name: "xterm-256color",
55
50
  cols: opts.cols ?? process.stdout.columns ?? 120,
56
- rows: opts.rows ?? Math.max((process.stdout.rows ?? 30) - reservedRows, 1),
51
+ rows: opts.rows ?? process.stdout.rows ?? 30,
57
52
  cwd: opts.cwd,
58
53
  env: { ...baseEnv, ...opts.env },
59
54
  // Use node-pty's bundled OpenConsole/conpty.dll. The in-box Windows
@@ -62,64 +57,13 @@ export function spawnPty(opts) {
62
57
  // bundled build is newer and does not trip it.
63
58
  useConptyDll: true,
64
59
  });
65
- const isInteractive = opts.interactive !== false;
66
60
  let gateOpen = false;
67
- let outputSuppressed = !isInteractive;
61
+ let renderSuppressed = false;
68
62
  let exited = false;
69
63
  let lastExitCode = null;
70
- let cleanedUp = false;
71
64
  const dataCallbacks = [];
72
65
  const exitCallbacks = [];
73
- // Create per-spawn hotkey detector with closure over this proc
74
- let detector;
75
- if (dumpTrigger) {
76
- const trigger = dumpTrigger;
77
- detector = new DumpHotkeyDetector(trigger, (deferred) => proc.write(deferred.toString()));
78
- }
79
- // Stdin forwarding when gate is open
80
- const stdinListener = (data) => {
81
- if (gateOpen) {
82
- if (detector) {
83
- const forward = detector.process(data);
84
- if (forward.length > 0)
85
- proc.write(forward.toString());
86
- }
87
- else {
88
- proc.write(data.toString());
89
- }
90
- }
91
- };
92
- if (isInteractive) {
93
- if (process.stdin.isTTY) {
94
- process.stdin.setRawMode(true);
95
- }
96
- process.stdin.on("data", stdinListener);
97
- }
98
- const cleanupTerminalState = () => {
99
- if (cleanedUp)
100
- return;
101
- cleanedUp = true;
102
- detector?.destroy();
103
- detector = undefined;
104
- // Stdin cleanup — only when interactive
105
- if (isInteractive) {
106
- process.stdin.removeListener("data", stdinListener);
107
- if (process.stdin.isTTY) {
108
- process.stdin.setRawMode(false);
109
- }
110
- }
111
- // Terminal-mode cleanup — always run
112
- process.stdout.write("\x1b[?9001l"); // disable win32-input-mode
113
- process.stdout.write("\x1b[<u"); // pop one kitty keyboard protocol level
114
- process.stdout.write("\x1b[?2004l"); // disable bracketed paste
115
- process.stdout.write("\x1b[?1003l"); // disable any-event mouse tracking
116
- process.stdout.write("\x1b[?1006l"); // disable SGR mouse mode
117
- };
118
- // Pipe PTY output to stdout (TUI passthrough)
119
66
  proc.onData((data) => {
120
- if (!outputSuppressed) {
121
- process.stdout.write(data);
122
- }
123
67
  for (const cb of dataCallbacks) {
124
68
  cb(data);
125
69
  }
@@ -127,7 +71,6 @@ export function spawnPty(opts) {
127
71
  proc.onExit(({ exitCode }) => {
128
72
  exited = true;
129
73
  lastExitCode = exitCode;
130
- cleanupTerminalState();
131
74
  for (const cb of exitCallbacks) {
132
75
  cb(exitCode);
133
76
  }
@@ -150,10 +93,8 @@ export function spawnPty(opts) {
150
93
  exitCallbacks.push(callback);
151
94
  },
152
95
  kill(signal) {
153
- cleanupTerminalState();
154
- if (exited) {
96
+ if (exited)
155
97
  return;
156
- }
157
98
  // node-pty on Windows does not support signals — call kill() without args.
158
99
  if (process.platform === "win32") {
159
100
  proc.kill();
@@ -162,6 +103,14 @@ export function spawnPty(opts) {
162
103
  proc.kill(signal);
163
104
  }
164
105
  },
106
+ resize(cols, rows) {
107
+ try {
108
+ proc.resize(Math.max(1, cols), Math.max(1, rows));
109
+ }
110
+ catch {
111
+ // node-pty raises after the child has exited; resize is a no-op then.
112
+ }
113
+ },
165
114
  openGate() {
166
115
  gateOpen = true;
167
116
  },
@@ -172,10 +121,13 @@ export function spawnPty(opts) {
172
121
  return gateOpen;
173
122
  },
174
123
  suppressOutput() {
175
- outputSuppressed = true;
124
+ renderSuppressed = true;
176
125
  },
177
126
  resumeOutput() {
178
- outputSuppressed = false;
127
+ renderSuppressed = false;
128
+ },
129
+ get renderSuppressed() {
130
+ return renderSuppressed;
179
131
  },
180
132
  get pid() {
181
133
  return proc.pid;
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"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"}
@@ -28,16 +28,25 @@ export interface PtyHandle {
28
28
  onExit(callback: (exitCode: number) => void): void;
29
29
  /** Kill the PTY process. */
30
30
  kill(signal?: string): void;
31
- /** Open the stdin gate user keystrokes flow to PTY. */
31
+ /** Resize the PTY's reported terminal dimensions. */
32
+ resize(cols: number, rows: number): void;
33
+ /** Open the stdin gate — the orchestration host may forward user keystrokes. */
32
34
  openGate(): void;
33
35
  /** Close the stdin gate — user keystrokes are blocked. */
34
36
  closeGate(): void;
35
37
  /** Whether the stdin gate is currently open. */
36
38
  readonly gateOpen: boolean;
37
- /** Suppress PTY output from being written to stdout. */
39
+ /**
40
+ * Mark the handle as render-suppressed. The orchestration host reads
41
+ * `renderSuppressed` and stops painting child output. Raw `onData`
42
+ * subscribers continue to receive bytes (so completion detectors and
43
+ * dump capture remain functional during graceful exit).
44
+ */
38
45
  suppressOutput(): void;
39
- /** Resume writing PTY output to stdout. */
46
+ /** Resume rendering for this handle. */
40
47
  resumeOutput(): void;
48
+ /** True while child output should not be displayed. */
49
+ readonly renderSuppressed: boolean;
41
50
  /** PID of the spawned process. */
42
51
  readonly pid: number;
43
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,IAAI,IAAI,CAAC;IACjB,0DAA0D;IAC1D,SAAS,IAAI,IAAI,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,cAAc,IAAI,IAAI,CAAC;IACvB,2CAA2C;IAC3C,YAAY,IAAI,IAAI,CAAC;IACrB,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qDAAqD;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gFAAgF;IAChF,QAAQ,IAAI,IAAI,CAAC;IACjB,0DAA0D;IAC1D,SAAS,IAAI,IAAI,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,IAAI,IAAI,CAAC;IACvB,wCAAwC;IACxC,YAAY,IAAI,IAAI,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
@@ -1,8 +1,28 @@
1
+ /**
2
+ * Thrown when an abort signal trips a polling helper. Carries
3
+ * `code = "ABORT_ERR"` so the runner can identify cancellation cleanly
4
+ * regardless of whether `signal.reason` is a string or an Error.
5
+ */
6
+ export declare class AbortError extends Error {
7
+ readonly code = "ABORT_ERR";
8
+ constructor(message?: string);
9
+ }
10
+ /**
11
+ * Sleep for `ms` milliseconds, settling early if `signal` aborts.
12
+ *
13
+ * Resolves after the timeout when not aborted. Rejects with the abort
14
+ * reason (or an `AbortError`) immediately when the signal is aborted —
15
+ * either before the call or while sleeping.
16
+ */
17
+ export declare function abortableSleep(ms: number, signal?: AbortSignal): Promise<void>;
1
18
  /**
2
19
  * Wait for a single known file path to appear on disk.
3
20
  * Used when the session file path is predicted upfront (pre-assigned session ID).
21
+ *
22
+ * The optional `signal` aborts the wait promptly. Aborts resolve as a
23
+ * rejected promise carrying the signal reason (or an `AbortError`).
4
24
  */
5
- export declare function waitForFile(filePath: string, timeoutMs?: number, pollMs?: number): Promise<string>;
25
+ export declare function waitForFile(filePath: string, timeoutMs?: number, pollMs?: number, signal?: AbortSignal): Promise<string>;
6
26
  /**
7
27
  * Snapshot existing session files in a directory.
8
28
  * Returns a Set of absolute file paths.
@@ -23,6 +43,7 @@ export declare function extractSessionId(filePath: string): string;
23
43
  * @param snapshot Previous snapshot of files
24
44
  * @param timeoutMs Maximum time to wait (default: 10s)
25
45
  * @param pollMs Polling interval (default: 500ms)
46
+ * @param signal Optional AbortSignal for prompt cancellation.
26
47
  */
27
- export declare function waitForNewSessionFile(dir: string, snapshot: Set<string>, timeoutMs?: number, pollMs?: number): Promise<string>;
48
+ export declare function waitForNewSessionFile(dir: string, snapshot: Set<string>, timeoutMs?: number, pollMs?: number, signal?: AbortSignal): Promise<string>;
28
49
  //# sourceMappingURL=locator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAS,EAClB,MAAM,SAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAatB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,SAAS,SAAS,EAClB,MAAM,SAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
1
+ {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,eAAe;gBAChB,OAAO,SAAY;CAIhC;AAUD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAatB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -1,12 +1,72 @@
1
1
  import { readdir, stat } from "node:fs/promises";
2
2
  import { basename, join } from "node:path";
3
+ /**
4
+ * Thrown when an abort signal trips a polling helper. Carries
5
+ * `code = "ABORT_ERR"` so the runner can identify cancellation cleanly
6
+ * regardless of whether `signal.reason` is a string or an Error.
7
+ */
8
+ export class AbortError extends Error {
9
+ code = "ABORT_ERR";
10
+ constructor(message = "Aborted") {
11
+ super(message);
12
+ this.name = "AbortError";
13
+ }
14
+ }
15
+ function throwIfAborted(signal) {
16
+ if (!signal?.aborted)
17
+ return;
18
+ const reason = signal.reason;
19
+ if (reason instanceof Error)
20
+ throw reason;
21
+ if (typeof reason === "string" && reason.length > 0)
22
+ throw new AbortError(reason);
23
+ throw new AbortError();
24
+ }
25
+ /**
26
+ * Sleep for `ms` milliseconds, settling early if `signal` aborts.
27
+ *
28
+ * Resolves after the timeout when not aborted. Rejects with the abort
29
+ * reason (or an `AbortError`) immediately when the signal is aborted —
30
+ * either before the call or while sleeping.
31
+ */
32
+ export async function abortableSleep(ms, signal) {
33
+ throwIfAborted(signal);
34
+ if (!signal) {
35
+ await new Promise((resolve) => setTimeout(resolve, ms));
36
+ return;
37
+ }
38
+ await new Promise((resolve, reject) => {
39
+ const timer = setTimeout(() => {
40
+ signal.removeEventListener("abort", onAbort);
41
+ resolve();
42
+ }, ms);
43
+ const onAbort = () => {
44
+ clearTimeout(timer);
45
+ signal.removeEventListener("abort", onAbort);
46
+ try {
47
+ throwIfAborted(signal);
48
+ }
49
+ catch (err) {
50
+ reject(err);
51
+ return;
52
+ }
53
+ reject(new AbortError());
54
+ };
55
+ signal.addEventListener("abort", onAbort, { once: true });
56
+ });
57
+ }
3
58
  /**
4
59
  * Wait for a single known file path to appear on disk.
5
60
  * Used when the session file path is predicted upfront (pre-assigned session ID).
61
+ *
62
+ * The optional `signal` aborts the wait promptly. Aborts resolve as a
63
+ * rejected promise carrying the signal reason (or an `AbortError`).
6
64
  */
7
- export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500) {
65
+ export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500, signal) {
66
+ throwIfAborted(signal);
8
67
  const deadline = Date.now() + timeoutMs;
9
68
  while (Date.now() < deadline) {
69
+ throwIfAborted(signal);
10
70
  try {
11
71
  await stat(filePath);
12
72
  return filePath;
@@ -14,7 +74,7 @@ export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500) {
14
74
  catch {
15
75
  /* not yet */
16
76
  }
17
- await new Promise((r) => setTimeout(r, pollMs));
77
+ await abortableSleep(pollMs, signal);
18
78
  }
19
79
  throw new Error(`Timed out waiting for session file: ${filePath}`);
20
80
  }
@@ -63,10 +123,13 @@ export function extractSessionId(filePath) {
63
123
  * @param snapshot Previous snapshot of files
64
124
  * @param timeoutMs Maximum time to wait (default: 10s)
65
125
  * @param pollMs Polling interval (default: 500ms)
126
+ * @param signal Optional AbortSignal for prompt cancellation.
66
127
  */
67
- export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, pollMs = 500) {
128
+ export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, pollMs = 500, signal) {
129
+ throwIfAborted(signal);
68
130
  const deadline = Date.now() + timeoutMs;
69
131
  while (Date.now() < deadline) {
132
+ throwIfAborted(signal);
70
133
  const newFiles = await findNewSessionFiles(dir, snapshot);
71
134
  if (newFiles.length > 0) {
72
135
  // Return the most recently modified file
@@ -81,7 +144,7 @@ export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, p
81
144
  }
82
145
  return newest;
83
146
  }
84
- await new Promise((resolve) => setTimeout(resolve, pollMs));
147
+ await abortableSleep(pollMs, signal);
85
148
  }
86
149
  throw new Error(`Timed out waiting for new session file in ${dir} after ${timeoutMs}ms`);
87
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,15 @@ export interface StatusContext {
8
8
  }
9
9
  /** Deterministic animal emoji for a branch name (djb2 hash). */
10
10
  export declare function branchAnimalEmoji(branch: string): string;
11
+ export interface StatusBarOptions {
12
+ /** When true, the StatusBar acts as a pure state holder and does not
13
+ * write to the terminal directly. The orchestration host invokes
14
+ * `render(columns)` and paints the bar itself. */
15
+ hostManaged?: boolean;
16
+ /** Notification fired when bar content changes. The host should
17
+ * schedule a repaint on the real terminal. */
18
+ onChange?: () => void;
19
+ }
11
20
  export declare class StatusBar {
12
21
  private enabled;
13
22
  private barRow;
@@ -19,7 +28,9 @@ export declare class StatusBar {
19
28
  private gitInfo;
20
29
  private flashTimer;
21
30
  private flashMessage;
22
- constructor(out?: NodeJS.WriteStream);
31
+ private hostManaged;
32
+ private onChange?;
33
+ constructor(out?: NodeJS.WriteStream, options?: StatusBarOptions);
23
34
  init(): void;
24
35
  update(ctx: StatusContext): void;
25
36
  /**
@@ -31,7 +42,16 @@ export declare class StatusBar {
31
42
  setGitInfo(info: GitInfo): void;
32
43
  destroy(): void;
33
44
  get reservedRows(): number;
45
+ /**
46
+ * Pure rendering: return the bar content padded/clipped to `columns`,
47
+ * including reverse-video on/off. Used by the orchestration host to
48
+ * paint the status row over the child viewport.
49
+ */
50
+ render(columns: number): string;
51
+ /** Plain content used both by host render() and legacy drawBar(). */
52
+ private formatContent;
34
53
  private formatGitSegment;
54
+ private notify;
35
55
  private drawBar;
36
56
  }
37
57
  //# sourceMappingURL=status-bar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,YAAY,CAAqB;gBAE7B,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW;IAOpC,IAAI,IAAI,IAAI;IA8BZ,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAMhC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,IAAI;IAgB/C,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK/B,OAAO,IAAI,IAAI;IAyBf,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,OAAO;CA+ChB"}
1
+ {"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,MAAM,WAAW,gBAAgB;IAC/B;;uDAEmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;mDAC+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAehE,IAAI,IAAI,IAAI;IAoCZ,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAUhC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,IAAI;IAwB/C,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAU/B,OAAO,IAAI,IAAI;IA8Bf,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM/B,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;CAuBhB"}