poly-weaver 0.9.2 → 0.9.4

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 (126) hide show
  1. package/dist/ansi.d.ts +1 -0
  2. package/dist/ansi.d.ts.map +1 -1
  3. package/dist/ansi.js +15 -0
  4. package/dist/ansi.js.map +1 -1
  5. package/dist/auto-update/check-agent-updates.d.ts +28 -0
  6. package/dist/auto-update/check-agent-updates.d.ts.map +1 -0
  7. package/dist/auto-update/check-agent-updates.js +130 -0
  8. package/dist/auto-update/check-agent-updates.js.map +1 -0
  9. package/dist/auto-update/detect-agents.d.ts +77 -0
  10. package/dist/auto-update/detect-agents.d.ts.map +1 -0
  11. package/dist/auto-update/detect-agents.js +333 -0
  12. package/dist/auto-update/detect-agents.js.map +1 -0
  13. package/dist/auto-update/gate.d.ts +20 -0
  14. package/dist/auto-update/gate.d.ts.map +1 -0
  15. package/dist/auto-update/gate.js +85 -0
  16. package/dist/auto-update/gate.js.map +1 -0
  17. package/dist/auto-update/install-agents.d.ts +12 -0
  18. package/dist/auto-update/install-agents.d.ts.map +1 -0
  19. package/dist/auto-update/install-agents.js +75 -0
  20. package/dist/auto-update/install-agents.js.map +1 -0
  21. package/dist/auto-update/install-method.d.ts +2 -0
  22. package/dist/auto-update/install-method.d.ts.map +1 -0
  23. package/dist/auto-update/install-method.js +16 -0
  24. package/dist/auto-update/install-method.js.map +1 -0
  25. package/dist/auto-update/semver.d.ts +9 -0
  26. package/dist/auto-update/semver.d.ts.map +1 -0
  27. package/dist/auto-update/semver.js +72 -0
  28. package/dist/auto-update/semver.js.map +1 -0
  29. package/dist/auto-update/timeouts.d.ts +2 -0
  30. package/dist/auto-update/timeouts.d.ts.map +1 -0
  31. package/dist/auto-update/timeouts.js +2 -0
  32. package/dist/auto-update/timeouts.js.map +1 -0
  33. package/dist/auto-update/tui.d.ts +38 -0
  34. package/dist/auto-update/tui.d.ts.map +1 -0
  35. package/dist/auto-update/tui.js +140 -0
  36. package/dist/auto-update/tui.js.map +1 -0
  37. package/dist/auto-update/winget-retry.d.ts +22 -0
  38. package/dist/auto-update/winget-retry.d.ts.map +1 -0
  39. package/dist/auto-update/winget-retry.js +40 -0
  40. package/dist/auto-update/winget-retry.js.map +1 -0
  41. package/dist/cli.js +37 -21
  42. package/dist/cli.js.map +1 -1
  43. package/dist/dump/types.d.ts +2 -1
  44. package/dist/dump/types.d.ts.map +1 -1
  45. package/dist/flow/executor.d.ts.map +1 -1
  46. package/dist/flow/executor.js +1 -0
  47. package/dist/flow/executor.js.map +1 -1
  48. package/dist/flow-editor/tui.d.ts +2 -2
  49. package/dist/flow-editor/tui.d.ts.map +1 -1
  50. package/dist/flow-editor/tui.js +42 -34
  51. package/dist/flow-editor/tui.js.map +1 -1
  52. package/dist/orchestrator.d.ts.map +1 -1
  53. package/dist/orchestrator.js +0 -17
  54. package/dist/orchestrator.js.map +1 -1
  55. package/dist/preflight.d.ts +1 -51
  56. package/dist/preflight.d.ts.map +1 -1
  57. package/dist/preflight.js +1 -162
  58. package/dist/preflight.js.map +1 -1
  59. package/dist/preview-panel.d.ts +9 -6
  60. package/dist/preview-panel.d.ts.map +1 -1
  61. package/dist/preview-panel.js +97 -115
  62. package/dist/preview-panel.js.map +1 -1
  63. package/dist/providers/claude/completion-plan-mode.d.ts +0 -1
  64. package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -1
  65. package/dist/providers/claude/completion-plan-mode.js +0 -23
  66. package/dist/providers/claude/completion-plan-mode.js.map +1 -1
  67. package/dist/providers/option-catalog.d.ts.map +1 -1
  68. package/dist/providers/option-catalog.js +42 -1
  69. package/dist/providers/option-catalog.js.map +1 -1
  70. package/dist/resume-tui.d.ts +5 -5
  71. package/dist/resume-tui.d.ts.map +1 -1
  72. package/dist/resume-tui.js +17 -27
  73. package/dist/resume-tui.js.map +1 -1
  74. package/dist/session/manifest.d.ts +3 -1
  75. package/dist/session/manifest.d.ts.map +1 -1
  76. package/dist/session/restore.d.ts +3 -2
  77. package/dist/session/restore.d.ts.map +1 -1
  78. package/dist/session/restore.js +6 -2
  79. package/dist/session/restore.js.map +1 -1
  80. package/dist/session/resume.d.ts.map +1 -1
  81. package/dist/session/resume.js +0 -22
  82. package/dist/session/resume.js.map +1 -1
  83. package/dist/session/session-store.d.ts.map +1 -1
  84. package/dist/session/session-store.js +1 -0
  85. package/dist/session/session-store.js.map +1 -1
  86. package/dist/startup-tui.d.ts +9 -56
  87. package/dist/startup-tui.d.ts.map +1 -1
  88. package/dist/startup-tui.js +28 -110
  89. package/dist/startup-tui.js.map +1 -1
  90. package/dist/terminal/win32-key-translator.d.ts.map +1 -1
  91. package/dist/terminal/win32-key-translator.js +16 -0
  92. package/dist/terminal/win32-key-translator.js.map +1 -1
  93. package/dist/terminal-input.d.ts +3 -3
  94. package/dist/terminal-input.d.ts.map +1 -1
  95. package/dist/terminal-input.js +22 -6
  96. package/dist/terminal-input.js.map +1 -1
  97. package/dist/text-editing/emacs-input.d.ts +84 -0
  98. package/dist/text-editing/emacs-input.d.ts.map +1 -0
  99. package/dist/text-editing/emacs-input.js +233 -0
  100. package/dist/text-editing/emacs-input.js.map +1 -0
  101. package/dist/text-editing/readline-ops.d.ts +17 -0
  102. package/dist/text-editing/readline-ops.d.ts.map +1 -0
  103. package/dist/text-editing/readline-ops.js +172 -0
  104. package/dist/text-editing/readline-ops.js.map +1 -0
  105. package/dist/update-check.d.ts.map +1 -1
  106. package/dist/update-check.js +20 -6
  107. package/dist/update-check.js.map +1 -1
  108. package/dist/user/handler.d.ts +3 -3
  109. package/dist/user/handler.d.ts.map +1 -1
  110. package/dist/user/handler.js +11 -3
  111. package/dist/user/handler.js.map +1 -1
  112. package/dist/user/host-curate-prompt.d.ts.map +1 -1
  113. package/dist/user/host-curate-prompt.js +57 -27
  114. package/dist/user/host-curate-prompt.js.map +1 -1
  115. package/dist/user/host-prompt.d.ts.map +1 -1
  116. package/dist/user/host-prompt.js +64 -40
  117. package/dist/user/host-prompt.js.map +1 -1
  118. package/dist/user/index.d.ts +2 -1
  119. package/dist/user/index.d.ts.map +1 -1
  120. package/dist/user/index.js +1 -1
  121. package/dist/user/index.js.map +1 -1
  122. package/dist/user/prompt.d.ts +2 -49
  123. package/dist/user/prompt.d.ts.map +1 -1
  124. package/dist/user/prompt.js +1 -88
  125. package/dist/user/prompt.js.map +1 -1
  126. package/package.json +1 -1
@@ -0,0 +1,233 @@
1
+ import { isDumpHotkey } from "../dump/hotkey.js";
2
+ import { charBackward, charForward, killToLineEnd, killToLineStart, killWordBackward, lineDown, lineEnd, lineStart, lineUp, wordBackward, wordForward, } from "./readline-ops.js";
3
+ export const INPUT_WHEEL_LINES_PER_EVENT = 3;
4
+ /**
5
+ * `win32-key-translator` emits the same `TerminalKey` shapes as
6
+ * `TerminalKeyParser`'s Win32-input-mode path. This mapper intentionally only
7
+ * depends on those structured keys, so byte-stream and FFI Windows input stay
8
+ * behaviorally identical here.
9
+ */
10
+ export class EmacsInputParser {
11
+ mapKeys(keys) {
12
+ const events = [];
13
+ for (let i = 0; i < keys.length; i++) {
14
+ const key = keys[i];
15
+ const next = keys[i + 1];
16
+ if (key.kind === "escape"
17
+ && next?.kind === "printable"
18
+ && (next.char === "b" || next.char === "f")) {
19
+ events.push({ type: next.char === "b" ? "alt-b" : "alt-f" });
20
+ i++;
21
+ continue;
22
+ }
23
+ events.push(...this.mapKey(key));
24
+ }
25
+ return events;
26
+ }
27
+ mapKey(key) {
28
+ if (isDumpHotkey(key))
29
+ return [{ type: "dump" }];
30
+ switch (key.kind) {
31
+ case "printable":
32
+ return [{ type: "insert", text: key.char }];
33
+ case "enter":
34
+ return [{ type: "enter" }];
35
+ case "backspace":
36
+ return [{ type: "backspace" }];
37
+ case "escape":
38
+ return [{ type: "escape" }];
39
+ case "arrow":
40
+ return [{ type: "arrow", direction: key.direction }];
41
+ case "page":
42
+ return [{ type: "scroll-page", direction: key.direction }];
43
+ case "home":
44
+ return [{ type: "scroll-home" }];
45
+ case "end":
46
+ return [{ type: "scroll-end" }];
47
+ case "wheel":
48
+ return [{
49
+ type: "scroll-lines",
50
+ delta: key.direction === "up"
51
+ ? -INPUT_WHEEL_LINES_PER_EVENT
52
+ : INPUT_WHEEL_LINES_PER_EVENT,
53
+ }];
54
+ case "control":
55
+ return this.mapControlByte(key.byte);
56
+ case "kitty-key":
57
+ return this.mapKittyKey(key.keyCode, key.modifiers);
58
+ case "raw":
59
+ return [];
60
+ default:
61
+ return [];
62
+ }
63
+ }
64
+ mapControlByte(byte) {
65
+ switch (byte) {
66
+ case 0x01: return [{ type: "ctrl-a" }];
67
+ case 0x02: return [{ type: "ctrl-b" }];
68
+ case 0x03: return [{ type: "ctrl-c" }];
69
+ case 0x04: return [{ type: "ctrl-d" }];
70
+ case 0x05: return [{ type: "ctrl-e" }];
71
+ case 0x06: return [{ type: "ctrl-f" }];
72
+ case 0x09: return [{ type: "tab" }];
73
+ case 0x0b: return [{ type: "ctrl-k" }];
74
+ case 0x0e: return [{ type: "ctrl-n" }];
75
+ case 0x10: return [{ type: "ctrl-p" }];
76
+ case 0x13: return [{ type: "ctrl-s" }];
77
+ case 0x15: return [{ type: "ctrl-u" }];
78
+ case 0x17: return [{ type: "ctrl-w" }];
79
+ default: return [];
80
+ }
81
+ }
82
+ mapKittyKey(keyCode, modifiers) {
83
+ const ctrl = ((modifiers - 1) & 0x04) !== 0;
84
+ const alt = ((modifiers - 1) & 0x02) !== 0;
85
+ const shift = ((modifiers - 1) & 0x01) !== 0;
86
+ if (keyCode === 13 || keyCode === 10) {
87
+ if (shift)
88
+ return [{ type: "shift-enter" }];
89
+ return [{ type: "enter" }];
90
+ }
91
+ if (keyCode === 9) {
92
+ return shift ? [{ type: "shift-tab" }] : [{ type: "tab" }];
93
+ }
94
+ if (keyCode === 27)
95
+ return [{ type: "escape" }];
96
+ if (keyCode === 3 || (keyCode === 99 && ctrl))
97
+ return [{ type: "ctrl-c" }];
98
+ if (keyCode === 97 && ctrl)
99
+ return [{ type: "ctrl-a" }];
100
+ if (keyCode === 98 && ctrl)
101
+ return [{ type: "ctrl-b" }];
102
+ if (keyCode === 100 && ctrl)
103
+ return [{ type: "ctrl-d" }];
104
+ if (keyCode === 101 && ctrl)
105
+ return [{ type: "ctrl-e" }];
106
+ if (keyCode === 102 && ctrl)
107
+ return [{ type: "ctrl-f" }];
108
+ if (keyCode === 107 && ctrl)
109
+ return [{ type: "ctrl-k" }];
110
+ if (keyCode === 110 && ctrl)
111
+ return [{ type: "ctrl-n" }];
112
+ if (keyCode === 112 && ctrl)
113
+ return [{ type: "ctrl-p" }];
114
+ if (keyCode === 115 && ctrl)
115
+ return [{ type: "ctrl-s" }];
116
+ if (keyCode === 117 && ctrl)
117
+ return [{ type: "ctrl-u" }];
118
+ if (keyCode === 119 && ctrl)
119
+ return [{ type: "ctrl-w" }];
120
+ if (keyCode === 98 && alt)
121
+ return [{ type: "alt-b" }];
122
+ if (keyCode === 102 && alt)
123
+ return [{ type: "alt-f" }];
124
+ return [];
125
+ }
126
+ }
127
+ export function isTextBufferEvent(event) {
128
+ switch (event.type) {
129
+ case "insert":
130
+ case "backspace":
131
+ case "newline":
132
+ case "ctrl-a":
133
+ case "ctrl-e":
134
+ case "ctrl-b":
135
+ case "ctrl-f":
136
+ case "ctrl-p":
137
+ case "ctrl-n":
138
+ case "ctrl-k":
139
+ case "ctrl-u":
140
+ case "ctrl-w":
141
+ case "alt-b":
142
+ case "alt-f":
143
+ return true;
144
+ default:
145
+ return false;
146
+ }
147
+ }
148
+ function ensureTextBuffer(buffer) {
149
+ if (buffer.lines.length === 0)
150
+ buffer.lines.push("");
151
+ buffer.cursorRow = Math.max(0, Math.min(buffer.cursorRow, buffer.lines.length - 1));
152
+ buffer.cursorCol = Math.max(0, Math.min(buffer.cursorCol, buffer.lines[buffer.cursorRow].length));
153
+ }
154
+ export function applyTextBufferEvent(buffer, event) {
155
+ ensureTextBuffer(buffer);
156
+ switch (event.type) {
157
+ case "insert": {
158
+ if (event.text.length === 0)
159
+ return false;
160
+ const line = buffer.lines[buffer.cursorRow];
161
+ buffer.lines[buffer.cursorRow] =
162
+ line.slice(0, buffer.cursorCol) + event.text + line.slice(buffer.cursorCol);
163
+ buffer.cursorCol += event.text.length;
164
+ return true;
165
+ }
166
+ case "backspace": {
167
+ if (buffer.cursorCol > 0) {
168
+ const line = buffer.lines[buffer.cursorRow];
169
+ buffer.lines[buffer.cursorRow] =
170
+ line.slice(0, buffer.cursorCol - 1) + line.slice(buffer.cursorCol);
171
+ buffer.cursorCol--;
172
+ return true;
173
+ }
174
+ if (buffer.cursorRow > 0) {
175
+ const prevLine = buffer.lines[buffer.cursorRow - 1];
176
+ const curLine = buffer.lines[buffer.cursorRow];
177
+ buffer.cursorCol = prevLine.length;
178
+ buffer.lines[buffer.cursorRow - 1] = prevLine + curLine;
179
+ buffer.lines.splice(buffer.cursorRow, 1);
180
+ buffer.cursorRow--;
181
+ return true;
182
+ }
183
+ return false;
184
+ }
185
+ case "newline": {
186
+ const line = buffer.lines[buffer.cursorRow];
187
+ const before = line.slice(0, buffer.cursorCol);
188
+ const after = line.slice(buffer.cursorCol);
189
+ buffer.lines[buffer.cursorRow] = before;
190
+ buffer.lines.splice(buffer.cursorRow + 1, 0, after);
191
+ buffer.cursorRow++;
192
+ buffer.cursorCol = 0;
193
+ return true;
194
+ }
195
+ case "ctrl-a":
196
+ return lineStart(buffer);
197
+ case "ctrl-e":
198
+ return lineEnd(buffer);
199
+ case "ctrl-b":
200
+ return charBackward(buffer);
201
+ case "ctrl-f":
202
+ return charForward(buffer);
203
+ case "ctrl-p":
204
+ return lineUp(buffer);
205
+ case "ctrl-n":
206
+ return lineDown(buffer);
207
+ case "ctrl-k":
208
+ return killToLineEnd(buffer);
209
+ case "ctrl-u":
210
+ return killToLineStart(buffer);
211
+ case "ctrl-w":
212
+ return killWordBackward(buffer);
213
+ case "alt-b":
214
+ return wordBackward(buffer);
215
+ case "alt-f":
216
+ return wordForward(buffer);
217
+ }
218
+ }
219
+ export function applySingleLineTextBufferEvent(state, event) {
220
+ if (event.type === "newline" || event.type === "ctrl-p" || event.type === "ctrl-n") {
221
+ return false;
222
+ }
223
+ const buffer = {
224
+ lines: [state.buffer],
225
+ cursorRow: 0,
226
+ cursorCol: state.cursor,
227
+ };
228
+ const changed = applyTextBufferEvent(buffer, event);
229
+ state.buffer = buffer.lines[0] ?? "";
230
+ state.cursor = Math.max(0, Math.min(buffer.cursorCol, state.buffer.length));
231
+ return changed;
232
+ }
233
+ //# sourceMappingURL=emacs-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emacs-input.js","sourceRoot":"","sources":["../../src/text-editing/emacs-input.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,GAEZ,MAAM,mBAAmB,CAAC;AAmC3B,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAC3B,OAAO,CAAC,IAAmB;QACzB,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IACE,GAAG,CAAC,IAAI,KAAK,QAAQ;mBAClB,IAAI,EAAE,IAAI,KAAK,WAAW;mBAC1B,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAC3C,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7D,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,GAAgB;QAC7B,IAAI,YAAY,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,KAAK,OAAO;gBACV,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7B,KAAK,WAAW;gBACd,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9B,KAAK,OAAO;gBACV,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACvD,KAAK,MAAM;gBACT,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM;gBACT,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YACnC,KAAK,KAAK;gBACR,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAClC,KAAK,OAAO;gBACV,OAAO,CAAC;wBACN,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI;4BAC3B,CAAC,CAAC,CAAC,2BAA2B;4BAC9B,CAAC,CAAC,2BAA2B;qBAChC,CAAC,CAAC;YACL,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,KAAK,KAAK;gBACR,OAAO,EAAE,CAAC;YACZ;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,OAAe,EAAE,SAAiB;QACpD,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACrC,IAAI,KAAK;gBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,IAAI,IAAI,CAAC;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3E,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,EAAE,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,EAAE,IAAI,GAAG;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAC/C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAkB,EAClB,KAAsB;IAEtB,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9E,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACrE,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC;gBACxD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACzC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAyC,EACzC,KAAsB;IAEtB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,KAAK,CAAC,MAAM;KACxB,CAAC;IACF,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface TextBuffer {
2
+ lines: string[];
3
+ cursorRow: number;
4
+ cursorCol: number;
5
+ }
6
+ export declare function lineStart(b: TextBuffer): boolean;
7
+ export declare function lineEnd(b: TextBuffer): boolean;
8
+ export declare function charBackward(b: TextBuffer): boolean;
9
+ export declare function charForward(b: TextBuffer): boolean;
10
+ export declare function lineUp(b: TextBuffer): boolean;
11
+ export declare function lineDown(b: TextBuffer): boolean;
12
+ export declare function wordBackward(b: TextBuffer): boolean;
13
+ export declare function wordForward(b: TextBuffer): boolean;
14
+ export declare function killToLineEnd(b: TextBuffer): boolean;
15
+ export declare function killToLineStart(b: TextBuffer): boolean;
16
+ export declare function killWordBackward(b: TextBuffer): boolean;
17
+ //# sourceMappingURL=readline-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readline-ops.d.ts","sourceRoot":"","sources":["../../src/text-editing/readline-ops.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmED,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAKhD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAM9C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAYnD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAalD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAM7C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAM/C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAOnD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAOlD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAapD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAMtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAOvD"}
@@ -0,0 +1,172 @@
1
+ function ensureLines(b) {
2
+ if (b.lines.length === 0)
3
+ b.lines.push("");
4
+ if (b.cursorRow < 0)
5
+ b.cursorRow = 0;
6
+ if (b.cursorRow >= b.lines.length)
7
+ b.cursorRow = b.lines.length - 1;
8
+ const lineLen = b.lines[b.cursorRow].length;
9
+ if (b.cursorCol < 0)
10
+ b.cursorCol = 0;
11
+ if (b.cursorCol > lineLen)
12
+ b.cursorCol = lineLen;
13
+ }
14
+ function flatText(b) {
15
+ return b.lines.join("\n");
16
+ }
17
+ function cursorOffset(b) {
18
+ ensureLines(b);
19
+ let offset = b.cursorCol;
20
+ for (let row = 0; row < b.cursorRow; row++) {
21
+ offset += b.lines[row].length + 1;
22
+ }
23
+ return offset;
24
+ }
25
+ function setCursorOffset(b, offset) {
26
+ ensureLines(b);
27
+ let remaining = Math.max(0, Math.min(offset, flatText(b).length));
28
+ for (let row = 0; row < b.lines.length; row++) {
29
+ const lineLen = b.lines[row].length;
30
+ if (remaining <= lineLen) {
31
+ b.cursorRow = row;
32
+ b.cursorCol = remaining;
33
+ return;
34
+ }
35
+ remaining -= lineLen + 1;
36
+ }
37
+ b.cursorRow = b.lines.length - 1;
38
+ b.cursorCol = b.lines[b.cursorRow].length;
39
+ }
40
+ function replaceFlatRange(b, range) {
41
+ const text = flatText(b);
42
+ const next = text.slice(0, range.start) + text.slice(range.end);
43
+ b.lines = next.split("\n");
44
+ setCursorOffset(b, range.start);
45
+ }
46
+ function isWhitespace(ch) {
47
+ return ch !== undefined && /\s/.test(ch);
48
+ }
49
+ function previousWordStart(text, offset) {
50
+ let i = Math.max(0, Math.min(offset, text.length));
51
+ while (i > 0 && isWhitespace(text[i - 1]))
52
+ i--;
53
+ while (i > 0 && !isWhitespace(text[i - 1]))
54
+ i--;
55
+ return i;
56
+ }
57
+ function nextWordEnd(text, offset) {
58
+ let i = Math.max(0, Math.min(offset, text.length));
59
+ while (i < text.length && isWhitespace(text[i]))
60
+ i++;
61
+ while (i < text.length && !isWhitespace(text[i]))
62
+ i++;
63
+ return i;
64
+ }
65
+ export function lineStart(b) {
66
+ ensureLines(b);
67
+ if (b.cursorCol === 0)
68
+ return false;
69
+ b.cursorCol = 0;
70
+ return true;
71
+ }
72
+ export function lineEnd(b) {
73
+ ensureLines(b);
74
+ const next = b.lines[b.cursorRow].length;
75
+ if (b.cursorCol === next)
76
+ return false;
77
+ b.cursorCol = next;
78
+ return true;
79
+ }
80
+ export function charBackward(b) {
81
+ ensureLines(b);
82
+ if (b.cursorCol > 0) {
83
+ b.cursorCol--;
84
+ return true;
85
+ }
86
+ if (b.cursorRow > 0) {
87
+ b.cursorRow--;
88
+ b.cursorCol = b.lines[b.cursorRow].length;
89
+ return true;
90
+ }
91
+ return false;
92
+ }
93
+ export function charForward(b) {
94
+ ensureLines(b);
95
+ const lineLen = b.lines[b.cursorRow].length;
96
+ if (b.cursorCol < lineLen) {
97
+ b.cursorCol++;
98
+ return true;
99
+ }
100
+ if (b.cursorRow < b.lines.length - 1) {
101
+ b.cursorRow++;
102
+ b.cursorCol = 0;
103
+ return true;
104
+ }
105
+ return false;
106
+ }
107
+ export function lineUp(b) {
108
+ ensureLines(b);
109
+ if (b.cursorRow === 0)
110
+ return false;
111
+ b.cursorRow--;
112
+ b.cursorCol = Math.min(b.cursorCol, b.lines[b.cursorRow].length);
113
+ return true;
114
+ }
115
+ export function lineDown(b) {
116
+ ensureLines(b);
117
+ if (b.cursorRow >= b.lines.length - 1)
118
+ return false;
119
+ b.cursorRow++;
120
+ b.cursorCol = Math.min(b.cursorCol, b.lines[b.cursorRow].length);
121
+ return true;
122
+ }
123
+ export function wordBackward(b) {
124
+ const text = flatText(b);
125
+ const offset = cursorOffset(b);
126
+ const next = previousWordStart(text, offset);
127
+ if (next === offset)
128
+ return false;
129
+ setCursorOffset(b, next);
130
+ return true;
131
+ }
132
+ export function wordForward(b) {
133
+ const text = flatText(b);
134
+ const offset = cursorOffset(b);
135
+ const next = nextWordEnd(text, offset);
136
+ if (next === offset)
137
+ return false;
138
+ setCursorOffset(b, next);
139
+ return true;
140
+ }
141
+ export function killToLineEnd(b) {
142
+ ensureLines(b);
143
+ const line = b.lines[b.cursorRow];
144
+ if (b.cursorCol < line.length) {
145
+ b.lines[b.cursorRow] = line.slice(0, b.cursorCol);
146
+ return true;
147
+ }
148
+ if (b.cursorRow < b.lines.length - 1) {
149
+ b.lines[b.cursorRow] += b.lines[b.cursorRow + 1];
150
+ b.lines.splice(b.cursorRow + 1, 1);
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ export function killToLineStart(b) {
156
+ ensureLines(b);
157
+ if (b.cursorCol === 0)
158
+ return false;
159
+ b.lines[b.cursorRow] = b.lines[b.cursorRow].slice(b.cursorCol);
160
+ b.cursorCol = 0;
161
+ return true;
162
+ }
163
+ export function killWordBackward(b) {
164
+ const text = flatText(b);
165
+ const offset = cursorOffset(b);
166
+ const start = previousWordStart(text, offset);
167
+ if (start === offset)
168
+ return false;
169
+ replaceFlatRange(b, { start, end: offset });
170
+ return true;
171
+ }
172
+ //# sourceMappingURL=readline-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readline-ops.js","sourceRoot":"","sources":["../../src/text-editing/readline-ops.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAUjE"}
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAYjE"}
@@ -1,6 +1,7 @@
1
1
  import https from "node:https";
2
2
  import { APP_VERSION } from "./version.js";
3
- import { compareVersions } from "./providers/version.js";
3
+ import { compareSemver } from "./auto-update/semver.js";
4
+ import { UPDATE_CHECK_TIMEOUT_MS } from "./auto-update/timeouts.js";
4
5
  /**
5
6
  * Check the npm registry for a newer version of poly-weaver.
6
7
  * Returns `{ current, latest }` when an update is available, or `null`
@@ -9,7 +10,10 @@ import { compareVersions } from "./providers/version.js";
9
10
  export async function checkForUpdate() {
10
11
  try {
11
12
  const latest = await fetchLatestVersion();
12
- if (compareVersions(APP_VERSION, latest) < 0) {
13
+ const cmp = compareSemver(APP_VERSION, latest);
14
+ if (cmp === null)
15
+ return null;
16
+ if (cmp < 0) {
13
17
  return { current: APP_VERSION, latest };
14
18
  }
15
19
  return null;
@@ -20,17 +24,27 @@ export async function checkForUpdate() {
20
24
  }
21
25
  function fetchLatestVersion() {
22
26
  return new Promise((resolve, reject) => {
23
- const req = https.get("https://registry.npmjs.org/poly-weaver/latest", { timeout: 5000 }, (res) => {
27
+ const req = https.get("https://registry.npmjs.org/poly-weaver", {
28
+ timeout: UPDATE_CHECK_TIMEOUT_MS,
29
+ headers: {
30
+ Accept: "application/vnd.npm.install-v1+json",
31
+ },
32
+ }, (res) => {
33
+ if (res.statusCode === undefined || res.statusCode < 200 || res.statusCode >= 300) {
34
+ res.resume();
35
+ reject(new Error(`Registry returned ${res.statusCode ?? "unknown status"}`));
36
+ return;
37
+ }
24
38
  let data = "";
25
39
  res.on("data", (chunk) => { data += chunk.toString(); });
26
40
  res.on("end", () => {
27
41
  try {
28
42
  const json = JSON.parse(data);
29
- if (typeof json.version === "string") {
30
- resolve(json.version);
43
+ if (typeof json["dist-tags"]?.latest === "string") {
44
+ resolve(json["dist-tags"].latest);
31
45
  }
32
46
  else {
33
- reject(new Error("Missing version field"));
47
+ reject(new Error("Missing dist-tags.latest field"));
34
48
  }
35
49
  }
36
50
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAOzD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC1C,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CACnB,+CAA+C,EAC/C,EAAE,OAAO,EAAE,IAAI,EAAE,EACjB,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;oBACtD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;wBACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CACnB,wCAAwC,EACxC;YACE,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE;gBACP,MAAM,EAAE,qCAAqC;aAC9C;SACF,EACD,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAClF,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YAED,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAE3B,CAAC;oBACF,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAClD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;oBACtD,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -4,9 +4,9 @@ import type { BaseStep, StepContext, StepSignal, RetryFn, RoleHandler } from "..
4
4
  * RoleHandler adapter that bridges UserPromptHandler with the flow executor.
5
5
  * Registered as the "user" role so user steps are dispatched uniformly.
6
6
  *
7
- * On rejection, writes a unified verdict artifact with data, text, and meta.
8
- * This ensures `artifactData("verdict", "approved")` evaluates correctly when
9
- * the user rejects after a reviewer approves.
7
+ * Writes a unified verdict artifact with data, text, and meta when the step
8
+ * declares one. This ensures `artifactData("verdict", "approved")` evaluates
9
+ * correctly for both user acceptance and rejection.
10
10
  */
11
11
  export declare class UserRoleHandler implements RoleHandler {
12
12
  private userPhase;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAE1C,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,UAAU,CAAC;CA0BvB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,GACf,cAAc,CAShB"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAE1C,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,UAAU,CAAC;CAkCvB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,GACf,cAAc,CAShB"}
@@ -2,9 +2,9 @@
2
2
  * RoleHandler adapter that bridges UserPromptHandler with the flow executor.
3
3
  * Registered as the "user" role so user steps are dispatched uniformly.
4
4
  *
5
- * On rejection, writes a unified verdict artifact with data, text, and meta.
6
- * This ensures `artifactData("verdict", "approved")` evaluates correctly when
7
- * the user rejects after a reviewer approves.
5
+ * Writes a unified verdict artifact with data, text, and meta when the step
6
+ * declares one. This ensures `artifactData("verdict", "approved")` evaluates
7
+ * correctly for both user acceptance and rejection.
8
8
  */
9
9
  export class UserRoleHandler {
10
10
  userPhase;
@@ -20,6 +20,14 @@ export class UserRoleHandler {
20
20
  const promptCtx = { phaseLabel, artifactKind };
21
21
  const result = await this.userPhase.prompt(displayText, step.id, promptCtx);
22
22
  if (result.accepted) {
23
+ const verdictKey = step.writes.verdict;
24
+ if (verdictKey) {
25
+ ctx.artifacts.set(verdictKey, {
26
+ data: { approved: true },
27
+ text: "",
28
+ meta: { source: "user" },
29
+ });
30
+ }
23
31
  const userStep = step;
24
32
  return { kind: userStep.breakOnAccept ? "break-loop" : "continue" };
25
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CACX,IAAc,EACd,GAAgB,EAChB,MAAe;QAEf,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAG,eAAe;YACjC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,SAAS,GAAsB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAgB,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC5B,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;gBAC3B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClC,CAAC;CACF;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAc,EACd,GAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAc,UAAU,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAS,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/user/handler.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CACX,IAAc,EACd,GAAgB,EAChB,MAAe;QAEf,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAG,eAAe;YACjC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,SAAS,GAAsB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;oBAC5B,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACxB,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;iBACzB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG,IAAgB,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC5B,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;gBAC3B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClC,CAAC;CACF;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAc,EACd,GAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAc,UAAU,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAS,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-curate-prompt.d.ts","sourceRoot":"","sources":["../../src/user/host-curate-prompt.ts"],"names":[],"mappings":"AAWA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AAOzF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAEzC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CA4N/E"}
1
+ {"version":3,"file":"host-curate-prompt.d.ts","sourceRoot":"","sources":["../../src/user/host-curate-prompt.ts"],"names":[],"mappings":"AAgBA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AAOzF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAEzC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAqN/E"}