@oh-my-pi/pi-coding-agent 14.8.1 → 14.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/package.json +16 -7
  3. package/src/config/model-resolver.ts +92 -35
  4. package/src/config/prompt-templates.ts +1 -1
  5. package/src/debug/index.ts +21 -0
  6. package/src/debug/raw-sse-buffer.ts +229 -0
  7. package/src/debug/raw-sse.ts +213 -0
  8. package/src/edit/index.ts +9 -10
  9. package/src/edit/streaming.ts +6 -5
  10. package/src/eval/js/context-manager.ts +91 -47
  11. package/src/extensibility/extensions/loader.ts +9 -3
  12. package/src/extensibility/plugins/legacy-pi-compat.ts +99 -20
  13. package/src/hashline/anchors.ts +113 -0
  14. package/src/hashline/apply.ts +732 -0
  15. package/src/hashline/bigrams.json +649 -0
  16. package/src/hashline/constants.ts +8 -0
  17. package/src/hashline/diff-preview.ts +43 -0
  18. package/src/hashline/diff.ts +56 -0
  19. package/src/hashline/execute.ts +268 -0
  20. package/src/{edit/modes/hashline.lark → hashline/grammar.lark} +1 -1
  21. package/src/{edit/line-hash.ts → hashline/hash.ts} +5 -651
  22. package/src/hashline/index.ts +14 -0
  23. package/src/hashline/input.ts +110 -0
  24. package/src/hashline/parser.ts +220 -0
  25. package/src/hashline/prefixes.ts +101 -0
  26. package/src/hashline/recovery.ts +72 -0
  27. package/src/hashline/stream.ts +123 -0
  28. package/src/hashline/types.ts +69 -0
  29. package/src/hashline/utils.ts +3 -0
  30. package/src/index.ts +1 -1
  31. package/src/lsp/index.ts +1 -1
  32. package/src/lsp/render.ts +4 -0
  33. package/src/memories/index.ts +13 -4
  34. package/src/modes/components/assistant-message.ts +55 -9
  35. package/src/modes/components/welcome.ts +114 -38
  36. package/src/modes/controllers/event-controller.ts +3 -1
  37. package/src/modes/controllers/input-controller.ts +8 -1
  38. package/src/modes/interactive-mode.ts +9 -9
  39. package/src/modes/rpc/rpc-client.ts +53 -2
  40. package/src/modes/rpc/rpc-mode.ts +67 -1
  41. package/src/modes/rpc/rpc-types.ts +17 -2
  42. package/src/modes/utils/ui-helpers.ts +3 -1
  43. package/src/prompts/agents/reviewer.md +14 -0
  44. package/src/prompts/tools/hashline.md +57 -10
  45. package/src/sdk.ts +4 -3
  46. package/src/session/agent-session.ts +195 -30
  47. package/src/session/compaction/branch-summarization.ts +4 -2
  48. package/src/session/compaction/compaction.ts +22 -3
  49. package/src/task/executor.ts +21 -2
  50. package/src/task/index.ts +4 -1
  51. package/src/tools/ast-edit.ts +1 -1
  52. package/src/tools/match-line-format.ts +1 -1
  53. package/src/tools/read.ts +1 -1
  54. package/src/utils/file-mentions.ts +1 -1
  55. package/src/utils/title-generator.ts +11 -0
  56. package/src/edit/modes/hashline.ts +0 -2039
@@ -0,0 +1,649 @@
1
+ [
2
+ "aa",
3
+ "ab",
4
+ "ac",
5
+ "ad",
6
+ "ae",
7
+ "af",
8
+ "ag",
9
+ "ah",
10
+ "ai",
11
+ "aj",
12
+ "ak",
13
+ "al",
14
+ "am",
15
+ "an",
16
+ "ao",
17
+ "ap",
18
+ "aq",
19
+ "ar",
20
+ "as",
21
+ "at",
22
+ "au",
23
+ "av",
24
+ "aw",
25
+ "ax",
26
+ "ay",
27
+ "az",
28
+ "ba",
29
+ "bb",
30
+ "bc",
31
+ "bd",
32
+ "be",
33
+ "bf",
34
+ "bg",
35
+ "bh",
36
+ "bi",
37
+ "bj",
38
+ "bk",
39
+ "bl",
40
+ "bm",
41
+ "bn",
42
+ "bo",
43
+ "bp",
44
+ "br",
45
+ "bs",
46
+ "bt",
47
+ "bu",
48
+ "bv",
49
+ "bw",
50
+ "bx",
51
+ "by",
52
+ "bz",
53
+ "ca",
54
+ "cb",
55
+ "cc",
56
+ "cd",
57
+ "ce",
58
+ "cf",
59
+ "cg",
60
+ "ch",
61
+ "ci",
62
+ "cj",
63
+ "ck",
64
+ "cl",
65
+ "cm",
66
+ "cn",
67
+ "co",
68
+ "cp",
69
+ "cq",
70
+ "cr",
71
+ "cs",
72
+ "ct",
73
+ "cu",
74
+ "cv",
75
+ "cw",
76
+ "cx",
77
+ "cy",
78
+ "cz",
79
+ "da",
80
+ "db",
81
+ "dc",
82
+ "dd",
83
+ "de",
84
+ "df",
85
+ "dg",
86
+ "dh",
87
+ "di",
88
+ "dj",
89
+ "dk",
90
+ "dl",
91
+ "dm",
92
+ "dn",
93
+ "do",
94
+ "dp",
95
+ "dq",
96
+ "dr",
97
+ "ds",
98
+ "dt",
99
+ "du",
100
+ "dv",
101
+ "dw",
102
+ "dx",
103
+ "dy",
104
+ "dz",
105
+ "ea",
106
+ "eb",
107
+ "ec",
108
+ "ed",
109
+ "ee",
110
+ "ef",
111
+ "eg",
112
+ "eh",
113
+ "ei",
114
+ "ej",
115
+ "ek",
116
+ "el",
117
+ "em",
118
+ "en",
119
+ "eo",
120
+ "ep",
121
+ "eq",
122
+ "er",
123
+ "es",
124
+ "et",
125
+ "eu",
126
+ "ev",
127
+ "ew",
128
+ "ex",
129
+ "ey",
130
+ "ez",
131
+ "fa",
132
+ "fb",
133
+ "fc",
134
+ "fd",
135
+ "fe",
136
+ "ff",
137
+ "fg",
138
+ "fh",
139
+ "fi",
140
+ "fj",
141
+ "fk",
142
+ "fl",
143
+ "fm",
144
+ "fn",
145
+ "fo",
146
+ "fp",
147
+ "fq",
148
+ "fr",
149
+ "fs",
150
+ "ft",
151
+ "fu",
152
+ "fv",
153
+ "fw",
154
+ "fx",
155
+ "fy",
156
+ "fz",
157
+ "ga",
158
+ "gb",
159
+ "gc",
160
+ "gd",
161
+ "ge",
162
+ "gf",
163
+ "gg",
164
+ "gh",
165
+ "gi",
166
+ "gj",
167
+ "gl",
168
+ "gm",
169
+ "gn",
170
+ "go",
171
+ "gp",
172
+ "gr",
173
+ "gs",
174
+ "gt",
175
+ "gu",
176
+ "gv",
177
+ "gw",
178
+ "gx",
179
+ "gy",
180
+ "gz",
181
+ "ha",
182
+ "hb",
183
+ "hc",
184
+ "hd",
185
+ "he",
186
+ "hf",
187
+ "hg",
188
+ "hh",
189
+ "hi",
190
+ "hj",
191
+ "hk",
192
+ "hl",
193
+ "hm",
194
+ "hn",
195
+ "ho",
196
+ "hp",
197
+ "hq",
198
+ "hr",
199
+ "hs",
200
+ "ht",
201
+ "hu",
202
+ "hv",
203
+ "hw",
204
+ "hx",
205
+ "hy",
206
+ "hz",
207
+ "ia",
208
+ "ib",
209
+ "ic",
210
+ "id",
211
+ "ie",
212
+ "if",
213
+ "ig",
214
+ "ih",
215
+ "ii",
216
+ "ij",
217
+ "ik",
218
+ "il",
219
+ "im",
220
+ "in",
221
+ "io",
222
+ "ip",
223
+ "iq",
224
+ "ir",
225
+ "is",
226
+ "it",
227
+ "iu",
228
+ "iv",
229
+ "iw",
230
+ "ix",
231
+ "iy",
232
+ "iz",
233
+ "ja",
234
+ "jb",
235
+ "jc",
236
+ "jd",
237
+ "je",
238
+ "jf",
239
+ "jg",
240
+ "jh",
241
+ "ji",
242
+ "jj",
243
+ "jk",
244
+ "jl",
245
+ "jm",
246
+ "jn",
247
+ "jo",
248
+ "jp",
249
+ "jq",
250
+ "jr",
251
+ "js",
252
+ "jt",
253
+ "ju",
254
+ "jw",
255
+ "jx",
256
+ "jy",
257
+ "ka",
258
+ "kb",
259
+ "kc",
260
+ "kd",
261
+ "ke",
262
+ "kf",
263
+ "kg",
264
+ "kh",
265
+ "ki",
266
+ "kj",
267
+ "kk",
268
+ "kl",
269
+ "km",
270
+ "kn",
271
+ "ko",
272
+ "kp",
273
+ "kr",
274
+ "ks",
275
+ "kt",
276
+ "ku",
277
+ "kv",
278
+ "kw",
279
+ "kx",
280
+ "ky",
281
+ "la",
282
+ "lb",
283
+ "lc",
284
+ "ld",
285
+ "le",
286
+ "lf",
287
+ "lg",
288
+ "lh",
289
+ "li",
290
+ "lj",
291
+ "lk",
292
+ "ll",
293
+ "lm",
294
+ "ln",
295
+ "lo",
296
+ "lp",
297
+ "lr",
298
+ "ls",
299
+ "lt",
300
+ "lu",
301
+ "lv",
302
+ "lw",
303
+ "lx",
304
+ "ly",
305
+ "lz",
306
+ "ma",
307
+ "mb",
308
+ "mc",
309
+ "md",
310
+ "me",
311
+ "mf",
312
+ "mg",
313
+ "mh",
314
+ "mi",
315
+ "mj",
316
+ "mk",
317
+ "ml",
318
+ "mm",
319
+ "mn",
320
+ "mo",
321
+ "mp",
322
+ "mq",
323
+ "mr",
324
+ "ms",
325
+ "mt",
326
+ "mu",
327
+ "mv",
328
+ "mw",
329
+ "mx",
330
+ "my",
331
+ "mz",
332
+ "na",
333
+ "nb",
334
+ "nc",
335
+ "nd",
336
+ "ne",
337
+ "nf",
338
+ "ng",
339
+ "nh",
340
+ "ni",
341
+ "nj",
342
+ "nk",
343
+ "nl",
344
+ "nm",
345
+ "nn",
346
+ "no",
347
+ "np",
348
+ "nr",
349
+ "ns",
350
+ "nt",
351
+ "nu",
352
+ "nv",
353
+ "nw",
354
+ "nx",
355
+ "ny",
356
+ "nz",
357
+ "oa",
358
+ "ob",
359
+ "oc",
360
+ "od",
361
+ "oe",
362
+ "of",
363
+ "og",
364
+ "oh",
365
+ "oi",
366
+ "oj",
367
+ "ok",
368
+ "ol",
369
+ "om",
370
+ "on",
371
+ "oo",
372
+ "op",
373
+ "oq",
374
+ "or",
375
+ "os",
376
+ "ot",
377
+ "ou",
378
+ "ov",
379
+ "ow",
380
+ "ox",
381
+ "oy",
382
+ "oz",
383
+ "pa",
384
+ "pb",
385
+ "pc",
386
+ "pd",
387
+ "pe",
388
+ "pf",
389
+ "pg",
390
+ "ph",
391
+ "pi",
392
+ "pj",
393
+ "pk",
394
+ "pl",
395
+ "pm",
396
+ "pn",
397
+ "po",
398
+ "pp",
399
+ "pq",
400
+ "pr",
401
+ "ps",
402
+ "pt",
403
+ "pu",
404
+ "pv",
405
+ "pw",
406
+ "px",
407
+ "py",
408
+ "pz",
409
+ "qa",
410
+ "qb",
411
+ "qc",
412
+ "qd",
413
+ "qe",
414
+ "qh",
415
+ "qi",
416
+ "ql",
417
+ "qm",
418
+ "qn",
419
+ "qo",
420
+ "qp",
421
+ "qq",
422
+ "qr",
423
+ "qs",
424
+ "qt",
425
+ "qu",
426
+ "qw",
427
+ "qx",
428
+ "qy",
429
+ "ra",
430
+ "rb",
431
+ "rc",
432
+ "rd",
433
+ "re",
434
+ "rf",
435
+ "rg",
436
+ "rh",
437
+ "ri",
438
+ "rk",
439
+ "rl",
440
+ "rm",
441
+ "rn",
442
+ "ro",
443
+ "rp",
444
+ "rq",
445
+ "rr",
446
+ "rs",
447
+ "rt",
448
+ "ru",
449
+ "rv",
450
+ "rw",
451
+ "rx",
452
+ "ry",
453
+ "rz",
454
+ "sa",
455
+ "sb",
456
+ "sc",
457
+ "sd",
458
+ "se",
459
+ "sf",
460
+ "sg",
461
+ "sh",
462
+ "si",
463
+ "sj",
464
+ "sk",
465
+ "sl",
466
+ "sm",
467
+ "sn",
468
+ "so",
469
+ "sp",
470
+ "sq",
471
+ "sr",
472
+ "ss",
473
+ "st",
474
+ "su",
475
+ "sv",
476
+ "sw",
477
+ "sx",
478
+ "sy",
479
+ "sz",
480
+ "ta",
481
+ "tb",
482
+ "tc",
483
+ "td",
484
+ "te",
485
+ "tf",
486
+ "tg",
487
+ "th",
488
+ "ti",
489
+ "tj",
490
+ "tk",
491
+ "tl",
492
+ "tm",
493
+ "tn",
494
+ "to",
495
+ "tp",
496
+ "tr",
497
+ "ts",
498
+ "tt",
499
+ "tu",
500
+ "tv",
501
+ "tw",
502
+ "tx",
503
+ "ty",
504
+ "tz",
505
+ "ua",
506
+ "ub",
507
+ "uc",
508
+ "ud",
509
+ "ue",
510
+ "uf",
511
+ "ug",
512
+ "uh",
513
+ "ui",
514
+ "uj",
515
+ "uk",
516
+ "ul",
517
+ "um",
518
+ "un",
519
+ "uo",
520
+ "up",
521
+ "uq",
522
+ "ur",
523
+ "us",
524
+ "ut",
525
+ "uu",
526
+ "uv",
527
+ "uw",
528
+ "ux",
529
+ "uy",
530
+ "uz",
531
+ "va",
532
+ "vb",
533
+ "vc",
534
+ "vd",
535
+ "ve",
536
+ "vf",
537
+ "vg",
538
+ "vh",
539
+ "vi",
540
+ "vj",
541
+ "vk",
542
+ "vl",
543
+ "vm",
544
+ "vn",
545
+ "vo",
546
+ "vp",
547
+ "vq",
548
+ "vr",
549
+ "vs",
550
+ "vt",
551
+ "vu",
552
+ "vv",
553
+ "vw",
554
+ "vx",
555
+ "vy",
556
+ "vz",
557
+ "wa",
558
+ "wb",
559
+ "wc",
560
+ "wd",
561
+ "we",
562
+ "wf",
563
+ "wg",
564
+ "wh",
565
+ "wi",
566
+ "wj",
567
+ "wk",
568
+ "wl",
569
+ "wm",
570
+ "wn",
571
+ "wo",
572
+ "wp",
573
+ "wr",
574
+ "ws",
575
+ "wt",
576
+ "wu",
577
+ "wv",
578
+ "ww",
579
+ "wx",
580
+ "wy",
581
+ "xa",
582
+ "xb",
583
+ "xc",
584
+ "xd",
585
+ "xe",
586
+ "xf",
587
+ "xh",
588
+ "xi",
589
+ "xl",
590
+ "xm",
591
+ "xn",
592
+ "xo",
593
+ "xp",
594
+ "xr",
595
+ "xs",
596
+ "xt",
597
+ "xu",
598
+ "xx",
599
+ "xy",
600
+ "xz",
601
+ "ya",
602
+ "yb",
603
+ "yc",
604
+ "yd",
605
+ "ye",
606
+ "yf",
607
+ "yg",
608
+ "yh",
609
+ "yi",
610
+ "yj",
611
+ "yk",
612
+ "yl",
613
+ "ym",
614
+ "yn",
615
+ "yo",
616
+ "yp",
617
+ "yr",
618
+ "ys",
619
+ "yt",
620
+ "yu",
621
+ "yv",
622
+ "yw",
623
+ "yx",
624
+ "yy",
625
+ "yz",
626
+ "za",
627
+ "zb",
628
+ "zc",
629
+ "zd",
630
+ "ze",
631
+ "zf",
632
+ "zg",
633
+ "zh",
634
+ "zi",
635
+ "zk",
636
+ "zl",
637
+ "zm",
638
+ "zn",
639
+ "zo",
640
+ "zp",
641
+ "zr",
642
+ "zs",
643
+ "zt",
644
+ "zu",
645
+ "zw",
646
+ "zx",
647
+ "zy",
648
+ "zz"
649
+ ]
@@ -0,0 +1,8 @@
1
+ /** Lines of context shown either side of a hash mismatch. */
2
+ export const MISMATCH_CONTEXT = 2;
3
+
4
+ /** Filler hash used for the interior of a multi-line range; not validated. */
5
+ export const RANGE_INTERIOR_HASH = "**";
6
+
7
+ /** Header marker introducing a new file section in multi-section input. */
8
+ export const FILE_HEADER_PREFIX = "@";
@@ -0,0 +1,43 @@
1
+ import { computeLineHash, HL_BODY_SEP } from "./hash";
2
+ import type { CompactHashlineDiffOptions, CompactHashlineDiffPreview } from "./types";
3
+
4
+ export function buildCompactHashlineDiffPreview(
5
+ diff: string,
6
+ _options: CompactHashlineDiffOptions = {},
7
+ ): CompactHashlineDiffPreview {
8
+ const lines = diff.length === 0 ? [] : diff.split("\n");
9
+ let addedLines = 0;
10
+ let removedLines = 0;
11
+
12
+ // `generateDiffString` numbers `+` lines with the post-edit line number,
13
+ // `-` lines with the pre-edit line number, and context lines with the
14
+ // pre-edit line number. To emit fresh anchors usable for follow-up edits,
15
+ // we convert context-line numbers to post-edit positions by tracking the
16
+ // running offset (added so far - removed so far) as we walk the diff.
17
+ const formatted = lines.map(line => {
18
+ const kind = line[0];
19
+ if (kind !== "+" && kind !== "-" && kind !== " ") return line;
20
+
21
+ const body = line.slice(1);
22
+ const sep = body.indexOf("|");
23
+ if (sep === -1) return line;
24
+
25
+ const lineNumber = Number.parseInt(body.slice(0, sep), 10);
26
+ const content = body.slice(sep + 1);
27
+
28
+ switch (kind) {
29
+ case "+":
30
+ addedLines++;
31
+ return `+${lineNumber}${computeLineHash(lineNumber, content)}${HL_BODY_SEP}${content}`;
32
+ case "-":
33
+ removedLines++;
34
+ return `-${lineNumber}--${HL_BODY_SEP}${content}`;
35
+ default: {
36
+ const newLineNumber = lineNumber + addedLines - removedLines;
37
+ return ` ${newLineNumber}${computeLineHash(newLineNumber, content)}${HL_BODY_SEP}${content}`;
38
+ }
39
+ }
40
+ });
41
+
42
+ return { preview: formatted.join("\n"), addedLines, removedLines };
43
+ }