codebase-cli 2.0.0-pre.4 → 2.0.0-pre.40

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 (111) hide show
  1. package/dist/agent/agent.js +43 -15
  2. package/dist/agent/agent.js.map +1 -1
  3. package/dist/agent/config.js +61 -20
  4. package/dist/agent/config.js.map +1 -1
  5. package/dist/agent/events.bench.js +84 -0
  6. package/dist/agent/events.bench.js.map +1 -0
  7. package/dist/agent/prompt-suggestion.js +141 -0
  8. package/dist/agent/prompt-suggestion.js.map +1 -0
  9. package/dist/agent/system-prompt.js +15 -0
  10. package/dist/agent/system-prompt.js.map +1 -1
  11. package/dist/app-server/protocol.js +7 -0
  12. package/dist/app-server/protocol.js.map +1 -0
  13. package/dist/app-server/server.js +241 -0
  14. package/dist/app-server/server.js.map +1 -0
  15. package/dist/auth/cli.js +1 -1
  16. package/dist/auth/cli.js.map +1 -1
  17. package/dist/auth/credentials.js +33 -2
  18. package/dist/auth/credentials.js.map +1 -1
  19. package/dist/auth/flow.js +145 -24
  20. package/dist/auth/flow.js.map +1 -1
  21. package/dist/auth/token-manager.js +73 -0
  22. package/dist/auth/token-manager.js.map +1 -0
  23. package/dist/cli.js +56 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/commands/builtins.js +160 -14
  26. package/dist/commands/builtins.js.map +1 -1
  27. package/dist/commands/registry.js +46 -1
  28. package/dist/commands/registry.js.map +1 -1
  29. package/dist/compaction/monitor.js +38 -0
  30. package/dist/compaction/monitor.js.map +1 -0
  31. package/dist/config/types.js.map +1 -1
  32. package/dist/glue/client.js +12 -2
  33. package/dist/glue/client.js.map +1 -1
  34. package/dist/hooks/manager.js +8 -2
  35. package/dist/hooks/manager.js.map +1 -1
  36. package/dist/memory/store.js +2 -3
  37. package/dist/memory/store.js.map +1 -1
  38. package/dist/plan/run-flow.js +89 -0
  39. package/dist/plan/run-flow.js.map +1 -0
  40. package/dist/projects/cli.js +92 -0
  41. package/dist/projects/cli.js.map +1 -0
  42. package/dist/projects/client.js +120 -0
  43. package/dist/projects/client.js.map +1 -0
  44. package/dist/projects/types.js +2 -0
  45. package/dist/projects/types.js.map +1 -0
  46. package/dist/skills/platform-loader.js +133 -38
  47. package/dist/skills/platform-loader.js.map +1 -1
  48. package/dist/tools/__test__/mock-tool-context.js +31 -0
  49. package/dist/tools/__test__/mock-tool-context.js.map +1 -0
  50. package/dist/tools/file-state-cache.js.map +1 -1
  51. package/dist/tools/read-file.js +7 -2
  52. package/dist/tools/read-file.js.map +1 -1
  53. package/dist/ui/App.js +109 -110
  54. package/dist/ui/App.js.map +1 -1
  55. package/dist/ui/CompactionBanner.js +23 -0
  56. package/dist/ui/CompactionBanner.js.map +1 -0
  57. package/dist/ui/FirstRunSetup.js +66 -14
  58. package/dist/ui/FirstRunSetup.js.map +1 -1
  59. package/dist/ui/Input.js +370 -20
  60. package/dist/ui/Input.js.map +1 -1
  61. package/dist/ui/Markdown.js +286 -0
  62. package/dist/ui/Markdown.js.map +1 -0
  63. package/dist/ui/Message.js +110 -48
  64. package/dist/ui/Message.js.map +1 -1
  65. package/dist/ui/MessageList.js +100 -3
  66. package/dist/ui/MessageList.js.map +1 -1
  67. package/dist/ui/Permission.js +43 -20
  68. package/dist/ui/Permission.js.map +1 -1
  69. package/dist/ui/PixelC.js +25 -0
  70. package/dist/ui/PixelC.js.map +1 -0
  71. package/dist/ui/Status.js +267 -7
  72. package/dist/ui/Status.js.map +1 -1
  73. package/dist/ui/Throbber.js +11 -7
  74. package/dist/ui/Throbber.js.map +1 -1
  75. package/dist/ui/Welcome.js +59 -0
  76. package/dist/ui/Welcome.js.map +1 -0
  77. package/dist/ui/attachments.js +68 -0
  78. package/dist/ui/attachments.js.map +1 -0
  79. package/dist/ui/debug-input.js +44 -0
  80. package/dist/ui/debug-input.js.map +1 -0
  81. package/dist/ui/diff-summary.js +171 -0
  82. package/dist/ui/diff-summary.js.map +1 -0
  83. package/dist/ui/highlight.js +324 -0
  84. package/dist/ui/highlight.js.map +1 -0
  85. package/dist/ui/history-store.js +60 -0
  86. package/dist/ui/history-store.js.map +1 -0
  87. package/dist/ui/input-state.js +125 -1
  88. package/dist/ui/input-state.js.map +1 -1
  89. package/dist/ui/path-complete.js +102 -0
  90. package/dist/ui/path-complete.js.map +1 -0
  91. package/dist/ui/paths.js +41 -0
  92. package/dist/ui/paths.js.map +1 -0
  93. package/dist/ui/shell-escape.js +42 -0
  94. package/dist/ui/shell-escape.js.map +1 -0
  95. package/dist/ui/terminal-restore.js +83 -0
  96. package/dist/ui/terminal-restore.js.map +1 -0
  97. package/dist/ui/terminal-title.js +21 -0
  98. package/dist/ui/terminal-title.js.map +1 -0
  99. package/dist/ui/tool-call-line.js +83 -0
  100. package/dist/ui/tool-call-line.js.map +1 -0
  101. package/dist/ui/tool-labels.js +194 -0
  102. package/dist/ui/tool-labels.js.map +1 -0
  103. package/dist/ui/truncated-output.js +42 -0
  104. package/dist/ui/truncated-output.js.map +1 -0
  105. package/dist/ui/use-coalesced-agent-events.js +70 -0
  106. package/dist/ui/use-coalesced-agent-events.js.map +1 -0
  107. package/dist/ui/use-prompt-suggestion.js +52 -0
  108. package/dist/ui/use-prompt-suggestion.js.map +1 -0
  109. package/dist/ui/wrapped-lines.js +18 -0
  110. package/dist/ui/wrapped-lines.js.map +1 -0
  111. package/package.json +4 -1
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Tiny regex-based syntax highlighter for code blocks inside markdown.
3
+ * Each language is a flat list of `(regex, kind)` rules tried in order;
4
+ * the first match wins, the matched span is emitted as a typed token,
5
+ * and the scan resumes after it. Anything not matched falls through as
6
+ * plain text.
7
+ *
8
+ * We deliberately do *not* take a 6 MB dep (highlight.js, prismjs) just
9
+ * to colorize terminal code blocks — these rules handle 95% of what an
10
+ * LLM emits and stay easy to read. If a language isn't in `LANGS`, the
11
+ * caller renders the code block as plain text.
12
+ */
13
+ const TS_KEYWORDS = [
14
+ "abstract",
15
+ "as",
16
+ "async",
17
+ "await",
18
+ "break",
19
+ "case",
20
+ "catch",
21
+ "class",
22
+ "const",
23
+ "continue",
24
+ "debugger",
25
+ "declare",
26
+ "default",
27
+ "delete",
28
+ "do",
29
+ "else",
30
+ "enum",
31
+ "export",
32
+ "extends",
33
+ "finally",
34
+ "for",
35
+ "from",
36
+ "function",
37
+ "get",
38
+ "if",
39
+ "implements",
40
+ "import",
41
+ "in",
42
+ "infer",
43
+ "instanceof",
44
+ "interface",
45
+ "is",
46
+ "keyof",
47
+ "let",
48
+ "namespace",
49
+ "new",
50
+ "null",
51
+ "of",
52
+ "package",
53
+ "private",
54
+ "protected",
55
+ "public",
56
+ "readonly",
57
+ "return",
58
+ "set",
59
+ "static",
60
+ "super",
61
+ "switch",
62
+ "this",
63
+ "throw",
64
+ "true",
65
+ "false",
66
+ "try",
67
+ "type",
68
+ "typeof",
69
+ "undefined",
70
+ "var",
71
+ "void",
72
+ "while",
73
+ "with",
74
+ "yield",
75
+ ];
76
+ const PY_KEYWORDS = [
77
+ "and",
78
+ "as",
79
+ "assert",
80
+ "async",
81
+ "await",
82
+ "break",
83
+ "class",
84
+ "continue",
85
+ "def",
86
+ "del",
87
+ "elif",
88
+ "else",
89
+ "except",
90
+ "False",
91
+ "finally",
92
+ "for",
93
+ "from",
94
+ "global",
95
+ "if",
96
+ "import",
97
+ "in",
98
+ "is",
99
+ "lambda",
100
+ "None",
101
+ "nonlocal",
102
+ "not",
103
+ "or",
104
+ "pass",
105
+ "raise",
106
+ "return",
107
+ "True",
108
+ "try",
109
+ "while",
110
+ "with",
111
+ "yield",
112
+ ];
113
+ const GO_KEYWORDS = [
114
+ "break",
115
+ "case",
116
+ "chan",
117
+ "const",
118
+ "continue",
119
+ "default",
120
+ "defer",
121
+ "else",
122
+ "fallthrough",
123
+ "for",
124
+ "func",
125
+ "go",
126
+ "goto",
127
+ "if",
128
+ "import",
129
+ "interface",
130
+ "map",
131
+ "package",
132
+ "range",
133
+ "return",
134
+ "select",
135
+ "struct",
136
+ "switch",
137
+ "type",
138
+ "var",
139
+ "nil",
140
+ "true",
141
+ "false",
142
+ ];
143
+ const SH_KEYWORDS = [
144
+ "if",
145
+ "then",
146
+ "else",
147
+ "elif",
148
+ "fi",
149
+ "for",
150
+ "in",
151
+ "do",
152
+ "done",
153
+ "while",
154
+ "until",
155
+ "case",
156
+ "esac",
157
+ "function",
158
+ "return",
159
+ "exit",
160
+ "break",
161
+ "continue",
162
+ "local",
163
+ "export",
164
+ "readonly",
165
+ "declare",
166
+ "set",
167
+ "unset",
168
+ "shift",
169
+ ];
170
+ const TS_RULES = [
171
+ { pattern: /^\/\/[^\n]*/, kind: "comment" },
172
+ { pattern: /^\/\*[\s\S]*?\*\//, kind: "comment" },
173
+ { pattern: /^`(?:[^`\\]|\\.)*`/, kind: "string" },
174
+ { pattern: /^"(?:[^"\\\n]|\\.)*"/, kind: "string" },
175
+ { pattern: /^'(?:[^'\\\n]|\\.)*'/, kind: "string" },
176
+ { pattern: /^\b(?:0x[0-9a-fA-F]+|0b[01]+|\d+\.?\d*(?:[eE][+-]?\d+)?)\b/, kind: "number" },
177
+ { pattern: new RegExp(`^\\b(?:${TS_KEYWORDS.join("|")})\\b`), kind: "keyword" },
178
+ { pattern: /^\b[A-Z][A-Za-z0-9_]*\b/, kind: "type" },
179
+ { pattern: /^[A-Za-z_$][\w$]*(?=\s*\()/, kind: "function" },
180
+ { pattern: /^[A-Za-z_$][\w$]*(?=\s*:)/, kind: "property" },
181
+ { pattern: /^[+\-*/%=<>!&|^~?:]+/, kind: "operator" },
182
+ { pattern: /^[{}[\]().,;]/, kind: "punctuation" },
183
+ ];
184
+ const PY_RULES = [
185
+ { pattern: /^#[^\n]*/, kind: "comment" },
186
+ { pattern: /^"""[\s\S]*?"""/, kind: "string" },
187
+ { pattern: /^'''[\s\S]*?'''/, kind: "string" },
188
+ { pattern: /^"(?:[^"\\\n]|\\.)*"/, kind: "string" },
189
+ { pattern: /^'(?:[^'\\\n]|\\.)*'/, kind: "string" },
190
+ { pattern: /^\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/, kind: "number" },
191
+ { pattern: new RegExp(`^\\b(?:${PY_KEYWORDS.join("|")})\\b`), kind: "keyword" },
192
+ { pattern: /^\b[A-Z][A-Za-z0-9_]*\b/, kind: "type" },
193
+ { pattern: /^[A-Za-z_][\w]*(?=\s*\()/, kind: "function" },
194
+ { pattern: /^[+\-*/%=<>!&|^~]+/, kind: "operator" },
195
+ { pattern: /^[{}[\]().,:;]/, kind: "punctuation" },
196
+ ];
197
+ const GO_RULES = [
198
+ { pattern: /^\/\/[^\n]*/, kind: "comment" },
199
+ { pattern: /^\/\*[\s\S]*?\*\//, kind: "comment" },
200
+ { pattern: /^`[\s\S]*?`/, kind: "string" },
201
+ { pattern: /^"(?:[^"\\\n]|\\.)*"/, kind: "string" },
202
+ { pattern: /^'(?:[^'\\]|\\.)*'/, kind: "string" },
203
+ { pattern: /^\b\d+\.?\d*\b/, kind: "number" },
204
+ { pattern: new RegExp(`^\\b(?:${GO_KEYWORDS.join("|")})\\b`), kind: "keyword" },
205
+ { pattern: /^\b[A-Z][A-Za-z0-9_]*\b/, kind: "type" },
206
+ { pattern: /^[A-Za-z_][\w]*(?=\s*\()/, kind: "function" },
207
+ { pattern: /^[+\-*/%=<>!&|^~]+/, kind: "operator" },
208
+ { pattern: /^[{}[\]().,;:]/, kind: "punctuation" },
209
+ ];
210
+ const SH_RULES = [
211
+ { pattern: /^#[^\n]*/, kind: "comment" },
212
+ { pattern: /^"(?:[^"\\\n]|\\.)*"/, kind: "string" },
213
+ { pattern: /^'[^'\n]*'/, kind: "string" },
214
+ { pattern: /^\$[A-Za-z_][\w]*/, kind: "property" },
215
+ { pattern: /^\$\{[^}]*\}/, kind: "property" },
216
+ { pattern: /^\b\d+\b/, kind: "number" },
217
+ { pattern: new RegExp(`^\\b(?:${SH_KEYWORDS.join("|")})\\b`), kind: "keyword" },
218
+ { pattern: /^-{1,2}[A-Za-z][\w-]*/, kind: "operator" },
219
+ { pattern: /^[|&;<>(){}]+/, kind: "punctuation" },
220
+ ];
221
+ const JSON_RULES = [
222
+ { pattern: /^"(?:[^"\\\n]|\\.)*"(?=\s*:)/, kind: "property" },
223
+ { pattern: /^"(?:[^"\\\n]|\\.)*"/, kind: "string" },
224
+ { pattern: /^\b(?:true|false|null)\b/, kind: "keyword" },
225
+ { pattern: /^-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/, kind: "number" },
226
+ { pattern: /^[{}[\],]/, kind: "punctuation" },
227
+ { pattern: /^:/, kind: "operator" },
228
+ ];
229
+ const LANGS = {
230
+ ts: TS_RULES,
231
+ tsx: TS_RULES,
232
+ js: TS_RULES,
233
+ jsx: TS_RULES,
234
+ javascript: TS_RULES,
235
+ typescript: TS_RULES,
236
+ py: PY_RULES,
237
+ python: PY_RULES,
238
+ go: GO_RULES,
239
+ golang: GO_RULES,
240
+ sh: SH_RULES,
241
+ bash: SH_RULES,
242
+ zsh: SH_RULES,
243
+ shell: SH_RULES,
244
+ json: JSON_RULES,
245
+ };
246
+ /** Get the rule set for a language slug, or null if unsupported. */
247
+ export function rulesFor(lang) {
248
+ if (!lang)
249
+ return null;
250
+ return LANGS[lang.toLowerCase()] ?? null;
251
+ }
252
+ /**
253
+ * Tokenize `code` according to `lang`. Returns one big flat token list
254
+ * with whitespace and unmatched content emitted as `text`. The caller
255
+ * is responsible for rendering each token in its kind's color.
256
+ */
257
+ export function highlight(code, lang) {
258
+ const rules = rulesFor(lang);
259
+ if (!rules)
260
+ return [{ kind: "text", text: code }];
261
+ const out = [];
262
+ let buffer = "";
263
+ let i = 0;
264
+ while (i < code.length) {
265
+ // Eat whitespace into the rolling text buffer — saves work and keeps
266
+ // indentation intact in the output.
267
+ const ch = code[i];
268
+ if (ch === " " || ch === "\t" || ch === "\n" || ch === "\r") {
269
+ buffer += ch;
270
+ i++;
271
+ continue;
272
+ }
273
+ const slice = code.slice(i);
274
+ let matched = null;
275
+ for (const rule of rules) {
276
+ const m = slice.match(rule.pattern);
277
+ if (m && m.index === 0) {
278
+ matched = { kind: rule.kind, len: m[0].length };
279
+ break;
280
+ }
281
+ }
282
+ if (matched) {
283
+ if (buffer) {
284
+ out.push({ kind: "text", text: buffer });
285
+ buffer = "";
286
+ }
287
+ out.push({ kind: matched.kind, text: slice.slice(0, matched.len) });
288
+ i += matched.len;
289
+ continue;
290
+ }
291
+ // No match — accumulate one char into the plain-text buffer.
292
+ buffer += ch;
293
+ i++;
294
+ }
295
+ if (buffer)
296
+ out.push({ kind: "text", text: buffer });
297
+ return out;
298
+ }
299
+ /** Map a token kind to an Ink color. Returns undefined for plain text. */
300
+ export function colorForKind(kind) {
301
+ switch (kind) {
302
+ case "keyword":
303
+ return "magenta";
304
+ case "string":
305
+ return "green";
306
+ case "number":
307
+ return "yellow";
308
+ case "comment":
309
+ return "gray";
310
+ case "type":
311
+ return "cyan";
312
+ case "function":
313
+ return "blue";
314
+ case "property":
315
+ return "cyan";
316
+ case "regex":
317
+ return "yellow";
318
+ case "operator":
319
+ case "punctuation":
320
+ case "text":
321
+ return undefined;
322
+ }
323
+ }
324
+ //# sourceMappingURL=highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/ui/highlight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyBH,MAAM,WAAW,GAAG;IACnB,UAAU;IACV,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,KAAK;IACL,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,YAAY;IACZ,WAAW;IACX,IAAI;IACJ,OAAO;IACP,KAAK;IACL,WAAW;IACX,KAAK;IACL,MAAM;IACN,IAAI;IACJ,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;IACR,WAAW;IACX,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;CACP,CAAC;AAEF,MAAM,WAAW,GAAG;IACnB,KAAK;IACL,IAAI;IACJ,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,UAAU;IACV,KAAK;IACL,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;CACP,CAAC;AAEF,MAAM,WAAW,GAAG;IACnB,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,SAAS;IACT,OAAO;IACP,MAAM;IACN,aAAa;IACb,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,WAAW;IACX,KAAK;IACL,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;CACP,CAAC;AAEF,MAAM,WAAW,GAAG;IACnB,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;IACV,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP,QAAQ;IACR,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;CACP,CAAC;AAEF,MAAM,QAAQ,GAAW;IACxB,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;IACjD,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjD,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,4DAA4D,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzF,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/E,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE;IACpD,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,UAAU,EAAE;IAC3D,EAAE,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,UAAU,EAAE;IAC1D,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE;IACrD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE;CACjD,CAAC;AAEF,MAAM,QAAQ,GAAW;IACxB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/E,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE;IACpD,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,UAAU,EAAE;IACzD,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;IACnD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE;CAClD,CAAC;AAEF,MAAM,QAAQ,GAAW;IACxB,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3C,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;IACjD,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1C,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7C,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/E,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE;IACpD,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,UAAU,EAAE;IACzD,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;IACnD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE;CAClD,CAAC;AAEF,MAAM,QAAQ,GAAW;IACxB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzC,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE;IAClD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;IAC7C,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/E,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,EAAE;IACtD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE;CACjD,CAAC;AAEF,MAAM,UAAU,GAAW;IAC1B,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,UAAU,EAAE;IAC7D,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;IACxD,EAAE,OAAO,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE;IAC7C,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;CACnC,CAAC;AAEF,MAAM,KAAK,GAA2B;IACrC,EAAE,EAAE,QAAQ;IACZ,GAAG,EAAE,QAAQ;IACb,EAAE,EAAE,QAAQ;IACZ,GAAG,EAAE,QAAQ;IACb,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,UAAU;CAChB,CAAC;AAEF,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,IAAwB;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAwB;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,qEAAqE;QACrE,oCAAoC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC7D,MAAM,IAAI,EAAE,CAAC;YACb,CAAC,EAAE,CAAC;YACJ,SAAS;QACV,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,GAA4C,IAAI,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAChD,MAAM;YACP,CAAC;QACF,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,MAAM,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzC,MAAM,GAAG,EAAE,CAAC;YACb,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;YACjB,SAAS;QACV,CAAC;QACD,6DAA6D;QAC7D,MAAM,IAAI,EAAE,CAAC;QACb,CAAC,EAAE,CAAC;IACL,CAAC;IACD,IAAI,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,IAAe;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,QAAQ;YACZ,OAAO,OAAO,CAAC;QAChB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,MAAM,CAAC;QACf,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,UAAU;YACd,OAAO,MAAM,CAAC;QACf,KAAK,UAAU;YACd,OAAO,MAAM,CAAC;QACf,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,aAAa,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ const MAX_HISTORY = 200;
6
+ /**
7
+ * Per-cwd prompt history persisted to ~/.codebase/projects/<hash>/history.json.
8
+ * Keeps the most recent MAX_HISTORY entries, oldest first; identical to
9
+ * SessionStore's hashing so we share the project directory layout.
10
+ *
11
+ * Stored as a JSON array of strings. No metadata, no timestamps — the
12
+ * Input component just needs the chronological list for ↑/↓ recall.
13
+ */
14
+ export class HistoryStore {
15
+ path;
16
+ max;
17
+ constructor(options) {
18
+ const dataRoot = options.dataRoot ?? join(homedir(), ".codebase");
19
+ const hash = createHash("sha256").update(options.cwd).digest("hex").slice(0, 8);
20
+ this.path = join(dataRoot, "projects", hash, "history.json");
21
+ this.max = options.max ?? MAX_HISTORY;
22
+ }
23
+ get filePath() {
24
+ return this.path;
25
+ }
26
+ load() {
27
+ if (!existsSync(this.path))
28
+ return [];
29
+ try {
30
+ const raw = readFileSync(this.path, "utf8");
31
+ const parsed = JSON.parse(raw);
32
+ if (!Array.isArray(parsed))
33
+ return [];
34
+ return parsed.filter((s) => typeof s === "string");
35
+ }
36
+ catch {
37
+ return [];
38
+ }
39
+ }
40
+ /** Append `entry`. Collapses adjacent dupes so ↑↑↑ doesn't dwell. */
41
+ append(entry) {
42
+ const trimmed = entry.trim();
43
+ if (!trimmed)
44
+ return;
45
+ const current = this.load();
46
+ if (current[current.length - 1] === trimmed)
47
+ return;
48
+ const next = [...current, trimmed];
49
+ const sliced = next.length > this.max ? next.slice(next.length - this.max) : next;
50
+ const dir = join(this.path, "..");
51
+ try {
52
+ mkdirSync(dir, { recursive: true });
53
+ writeFileSync(this.path, JSON.stringify(sliced), { mode: 0o600 });
54
+ }
55
+ catch {
56
+ // best-effort — losing one history write isn't worth surfacing an error.
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=history-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-store.js","sourceRoot":"","sources":["../../src/ui/history-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,GAAG,GAAG,CAAC;AAQxB;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACP,IAAI,CAAS;IACb,GAAG,CAAS;IAE7B,YAAY,OAA4B;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,IAAI;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,qEAAqE;IACrE,MAAM,CAAC,KAAa;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO;YAAE,OAAO;QACpD,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC;YACJ,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACR,yEAAyE;QAC1E,CAAC;IACF,CAAC;CACD"}
@@ -18,7 +18,106 @@
18
18
  const MAX_UNDO = 100;
19
19
  const MAX_KILL_RING = 60;
20
20
  export function initialInputState() {
21
- return { buffer: "", cursor: 0, killRing: [], undoStack: [], lastAction: "init" };
21
+ return {
22
+ buffer: "",
23
+ cursor: 0,
24
+ killRing: [],
25
+ undoStack: [],
26
+ lastAction: "init",
27
+ pastedContents: {},
28
+ nextPasteId: 1,
29
+ };
30
+ }
31
+ /**
32
+ * A useInput tick is a paste rather than a keystroke when it contains a
33
+ * newline (typed `\<Enter>` is handled in the key.return branch, not as
34
+ * printable text — so any `\n` here came from the OS paste buffer) or
35
+ * when it's substantially longer than a normal keystroke / IME chunk.
36
+ */
37
+ export function looksLikePaste(input) {
38
+ return input.includes("\n") || input.length >= 100;
39
+ }
40
+ const PASTE_PLACEHOLDER_RE = /\[Pasted #(\d+) · \d+ (?:lines|chars)\]/g;
41
+ /** Anchored variants used to detect a placeholder hugging the cursor on either side. */
42
+ const PASTE_PLACEHOLDER_RE_END = /\[Pasted #(\d+) · \d+ (?:lines|chars)\]$/;
43
+ const PASTE_PLACEHOLDER_RE_START = /^\[Pasted #(\d+) · \d+ (?:lines|chars)\]/;
44
+ /**
45
+ * If the buffer slice ending at `pos` finishes with a complete placeholder,
46
+ * return its start offset and id. Used by backspace to delete a whole
47
+ * placeholder atomically instead of chipping at the closing bracket.
48
+ */
49
+ function placeholderEndingAt(buffer, pos) {
50
+ const before = buffer.slice(0, pos);
51
+ const m = before.match(PASTE_PLACEHOLDER_RE_END);
52
+ if (!m)
53
+ return undefined;
54
+ return { start: pos - m[0].length, id: Number.parseInt(m[1], 10) };
55
+ }
56
+ /**
57
+ * If the buffer slice starting at `pos` begins with a complete placeholder,
58
+ * return its end offset and id. Used by deleteForward.
59
+ */
60
+ function placeholderStartingAt(buffer, pos) {
61
+ const after = buffer.slice(pos);
62
+ const m = after.match(PASTE_PLACEHOLDER_RE_START);
63
+ if (!m)
64
+ return undefined;
65
+ return { end: pos + m[0].length, id: Number.parseInt(m[1], 10) };
66
+ }
67
+ function dropPasteEntry(map, id) {
68
+ if (!(id in map))
69
+ return map;
70
+ const next = { ...map };
71
+ delete next[id];
72
+ return next;
73
+ }
74
+ /**
75
+ * Render the placeholder shown in the visible buffer when text is pasted.
76
+ * Multi-line pastes use a line count; single-line long pastes show char
77
+ * count — different signals for what the user's eye expects to track.
78
+ */
79
+ export function formatPastePlaceholder(id, content) {
80
+ const lines = content.split("\n").length;
81
+ if (lines > 1)
82
+ return `[Pasted #${id} · ${lines} lines]`;
83
+ return `[Pasted #${id} · ${content.length} chars]`;
84
+ }
85
+ /**
86
+ * Stash pasted content under a fresh id and insert a placeholder at the
87
+ * cursor. The buffer stays short and readable; the real text re-inflates
88
+ * at submit via expandPastes(). Pastes follow normal insertChar undo
89
+ * snapshots — Ctrl-Z will pop the placeholder *and* the side entry stays
90
+ * in pastedContents, harmless because nothing will reference it.
91
+ */
92
+ export function insertPaste(state, content) {
93
+ if (!content)
94
+ return state;
95
+ const id = state.nextPasteId;
96
+ const placeholder = formatPastePlaceholder(id, content);
97
+ const inserted = insertChar(state, placeholder);
98
+ return {
99
+ ...inserted,
100
+ pastedContents: {
101
+ ...state.pastedContents,
102
+ [id]: { id, content, lines: content.split("\n").length },
103
+ },
104
+ nextPasteId: id + 1,
105
+ };
106
+ }
107
+ /**
108
+ * Replace `[Pasted #N · ...]` placeholders with their original content.
109
+ * Called at submit time so the agent sees the real text. Orphaned ids
110
+ * (placeholder deleted out of the buffer) are silently dropped — only
111
+ * the ones still present in the buffer expand. Placeholders we don't
112
+ * recognize (e.g. user typed something that matches the pattern) pass
113
+ * through unchanged so we don't corrupt their literal input.
114
+ */
115
+ export function expandPastes(buffer, pastedContents) {
116
+ return buffer.replace(PASTE_PLACEHOLDER_RE, (match, idStr) => {
117
+ const id = Number.parseInt(idStr, 10);
118
+ const entry = pastedContents[id];
119
+ return entry ? entry.content : match;
120
+ });
22
121
  }
23
122
  export function setBuffer(state, buffer) {
24
123
  const cursor = Math.min(state.cursor, buffer.length);
@@ -45,6 +144,20 @@ export function insertChar(state, ch) {
45
144
  export function backspace(state) {
46
145
  if (state.cursor === 0)
47
146
  return state;
147
+ // Atomic placeholder delete: backspacing at the right edge of a paste
148
+ // placeholder removes the whole placeholder instead of breaking off
149
+ // the closing bracket and leaving a fragment that won't re-expand.
150
+ const ph = placeholderEndingAt(state.buffer, state.cursor);
151
+ if (ph) {
152
+ return {
153
+ ...state,
154
+ buffer: state.buffer.slice(0, ph.start) + state.buffer.slice(state.cursor),
155
+ cursor: ph.start,
156
+ pastedContents: dropPasteEntry(state.pastedContents, ph.id),
157
+ undoStack: pushUndo(state),
158
+ lastAction: "delete",
159
+ };
160
+ }
48
161
  return {
49
162
  ...state,
50
163
  buffer: state.buffer.slice(0, state.cursor - 1) + state.buffer.slice(state.cursor),
@@ -56,6 +169,17 @@ export function backspace(state) {
56
169
  export function deleteForward(state) {
57
170
  if (state.cursor >= state.buffer.length)
58
171
  return state;
172
+ // Atomic placeholder delete on forward-delete from the left edge.
173
+ const ph = placeholderStartingAt(state.buffer, state.cursor);
174
+ if (ph) {
175
+ return {
176
+ ...state,
177
+ buffer: state.buffer.slice(0, state.cursor) + state.buffer.slice(ph.end),
178
+ pastedContents: dropPasteEntry(state.pastedContents, ph.id),
179
+ undoStack: pushUndo(state),
180
+ lastAction: "delete",
181
+ };
182
+ }
59
183
  return {
60
184
  ...state,
61
185
  buffer: state.buffer.slice(0, state.cursor) + state.buffer.slice(state.cursor + 1),
@@ -1 +1 @@
1
- {"version":3,"file":"input-state.js","sourceRoot":"","sources":["../../src/ui/input-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-state.js","sourceRoot":"","sources":["../../src/ui/input-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsBH,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,UAAU,iBAAiB;IAChC,OAAO;QACN,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,CAAC;KACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACpD,CAAC;AAED,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AACxE,wFAAwF;AACxF,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AAC5E,MAAM,0BAA0B,GAAG,0CAA0C,CAAC;AAE9E;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,MAAc,EAAE,GAAW;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,MAAc,EAAE,GAAW;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,GAAkC,EAAE,EAAU;IACrE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IACxB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAU,EAAE,OAAe;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,YAAY,EAAE,MAAM,KAAK,SAAS,CAAC;IACzD,OAAO,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,OAAe;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;IAC7B,MAAM,WAAW,GAAG,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,OAAO;QACN,GAAG,QAAQ;QACX,cAAc,EAAE;YACf,GAAG,KAAK,CAAC,cAAc;YACvB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SACxD;QACD,WAAW,EAAE,EAAE,GAAG,CAAC;KACnB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,cAA6C;IACzF,OAAO,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,MAAc;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,EAAU;IACvD,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,MAAM,IAAI,GAAe;QACxB,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACnF,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM;KAChC,CAAC;IACF,+EAA+E;IAC/E,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IACzB,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,sEAAsE;IACtE,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,EAAE,EAAE,CAAC;QACR,OAAO;YACN,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1E,MAAM,EAAE,EAAE,CAAC,KAAK;YAChB,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC1B,UAAU,EAAE,QAAQ;SACpB,CAAC;IACH,CAAC;IACD,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAClF,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;QACxB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,QAAQ;KACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtD,kEAAkE;IAClE,MAAM,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,EAAE,EAAE,CAAC;QACR,OAAO;YACN,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;YACxE,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC1B,UAAU,EAAE,QAAQ;SACpB,CAAC;IACH,CAAC;IACD,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClF,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,QAAQ;KACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAChE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACjF,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAiB;IACxC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC3C,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QAC9C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC/C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3E,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC/C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAChD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACzE,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QAC9C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,KAAiB;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACpF,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;QACjC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,KAAiB;IACrC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,UAAU,EAAE,MAAM;KAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED,gEAAgE;AAEhE,SAAS,QAAQ,CAAC,KAAiB;IAClC,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAiB,EAAE,MAAc,EAAE,SAA6B;IACrF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;IAChF,CAAC;SAAM,CAAC;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAY;IACzD,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IACvD,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc,EAAE,IAAY;IAC5D,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IAC/D,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IAC9D,OAAO,CAAC,CAAC;AACV,CAAC"}