@slkiser/opencode-quota 4.10.7 → 4.10.9

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 (54) hide show
  1. package/README.md +3 -1
  2. package/dist/data/modelsdev-pricing.min.json +329 -22
  3. package/dist/lib/home-dir-display.d.ts +7 -0
  4. package/dist/lib/home-dir-display.d.ts.map +1 -0
  5. package/dist/lib/home-dir-display.js +49 -0
  6. package/dist/lib/home-dir-display.js.map +1 -0
  7. package/dist/lib/init-installer.d.ts.map +1 -1
  8. package/dist/lib/init-installer.js +58 -18
  9. package/dist/lib/init-installer.js.map +1 -1
  10. package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
  11. package/dist/lib/modelsdev-pricing.js +60 -10
  12. package/dist/lib/modelsdev-pricing.js.map +1 -1
  13. package/dist/lib/ollama-cloud.d.ts +6 -5
  14. package/dist/lib/ollama-cloud.d.ts.map +1 -1
  15. package/dist/lib/ollama-cloud.js +80 -38
  16. package/dist/lib/ollama-cloud.js.map +1 -1
  17. package/dist/lib/opencode-config-editor.d.ts.map +1 -1
  18. package/dist/lib/opencode-config-editor.js +21 -10
  19. package/dist/lib/opencode-config-editor.js.map +1 -1
  20. package/dist/lib/opencode-storage.d.ts.map +1 -1
  21. package/dist/lib/opencode-storage.js +48 -4
  22. package/dist/lib/opencode-storage.js.map +1 -1
  23. package/dist/lib/opencode-zen-config.d.ts +5 -0
  24. package/dist/lib/opencode-zen-config.d.ts.map +1 -1
  25. package/dist/lib/opencode-zen-config.js +1 -1
  26. package/dist/lib/opencode-zen-config.js.map +1 -1
  27. package/dist/lib/opencode-zen.d.ts +20 -3
  28. package/dist/lib/opencode-zen.d.ts.map +1 -1
  29. package/dist/lib/opencode-zen.js +160 -51
  30. package/dist/lib/opencode-zen.js.map +1 -1
  31. package/dist/lib/provider-registration.d.ts +1 -1
  32. package/dist/lib/provider-registration.d.ts.map +1 -1
  33. package/dist/lib/provider-registration.js +1 -1
  34. package/dist/lib/provider-registration.js.map +1 -1
  35. package/dist/lib/quota-status.d.ts +2 -0
  36. package/dist/lib/quota-status.d.ts.map +1 -1
  37. package/dist/lib/quota-status.js +33 -15
  38. package/dist/lib/quota-status.js.map +1 -1
  39. package/dist/lib/types.d.ts +22 -11
  40. package/dist/lib/types.d.ts.map +1 -1
  41. package/dist/providers/cache-policies.d.ts.map +1 -1
  42. package/dist/providers/cache-policies.js +4 -3
  43. package/dist/providers/cache-policies.js.map +1 -1
  44. package/dist/providers/ollama-cloud.d.ts +2 -1
  45. package/dist/providers/ollama-cloud.d.ts.map +1 -1
  46. package/dist/providers/ollama-cloud.js +32 -7
  47. package/dist/providers/ollama-cloud.js.map +1 -1
  48. package/dist/providers/opencode-zen.d.ts.map +1 -1
  49. package/dist/providers/opencode-zen.js +16 -2
  50. package/dist/providers/opencode-zen.js.map +1 -1
  51. package/dist/tui.d.ts.map +1 -1
  52. package/dist/tui.js +16 -0
  53. package/dist/tui.tsx +2 -0
  54. package/package.json +1 -1
package/README.md CHANGED
@@ -31,6 +31,8 @@ npx @slkiser/opencode-quota@4 init
31
31
 
32
32
  Upgrading from v3? Read the [v4 migration guide](docs/readme/v4-migration.md).
33
33
 
34
+ `init` changes an existing `@slkiser/opencode-quota` or `@slkiser/opencode-quota@latest` entry to `@4`, because OpenCode Quota 5 needs OpenCode 2.
35
+
34
36
  After installation:
35
37
 
36
38
  1. Restart OpenCode.
@@ -155,7 +157,7 @@ Run `npx @slkiser/opencode-quota@4 --help` for command options. See [External in
155
157
  | Google AGY | [Needs setup](docs/readme/providers.md#google-agy-quick-setup) | Remote API | Quota |
156
158
  | Kilo Gateway | Automatic | Remote API | Quota and balance |
157
159
  | NanoGPT | Automatic | Remote API | Quota and balance |
158
- | Ollama Cloud | Automatic | Remote API | Quota and usage |
160
+ | Ollama Cloud | Automatic | Remote API | Quota and balance |
159
161
  | OpenAI | Automatic | Remote API | Quota |
160
162
  | OpenCode Go | Automatic | Remote API | Quota |
161
163
  | OpenCode Zen | [Needs setup](docs/readme/providers.md#opencode-zen) | Remote API | Budget and balance |
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_meta": {
3
- "generatedAt": 1774268550053,
3
+ "generatedAt": 1791292565106,
4
4
  "providers": [
5
5
  "anthropic",
6
6
  "google",
@@ -68,6 +68,18 @@
68
68
  "cache_read": 0.3,
69
69
  "cache_write": 0.3
70
70
  },
71
+ "claude-fable-5": {
72
+ "input": 10,
73
+ "output": 50,
74
+ "cache_read": 1,
75
+ "cache_write": 12.5
76
+ },
77
+ "claude-fable-5-1": {
78
+ "input": 10,
79
+ "output": 50,
80
+ "cache_read": 0.25,
81
+ "cache_write": 12.5
82
+ },
71
83
  "claude-haiku-4-5": {
72
84
  "input": 1,
73
85
  "output": 5,
@@ -122,6 +134,30 @@
122
134
  "cache_read": 0.5,
123
135
  "cache_write": 6.25
124
136
  },
137
+ "claude-opus-4-7": {
138
+ "input": 5,
139
+ "output": 25,
140
+ "cache_read": 0.5,
141
+ "cache_write": 6.25
142
+ },
143
+ "claude-opus-4-8": {
144
+ "input": 5,
145
+ "output": 25,
146
+ "cache_read": 0.5,
147
+ "cache_write": 6.25
148
+ },
149
+ "claude-opus-5": {
150
+ "input": 5,
151
+ "output": 25,
152
+ "cache_read": 0.5,
153
+ "cache_write": 6.25
154
+ },
155
+ "claude-opus-5-5": {
156
+ "input": 4,
157
+ "output": 20,
158
+ "cache_read": 0.2,
159
+ "cache_write": 5
160
+ },
125
161
  "claude-sonnet-4-0": {
126
162
  "input": 3,
127
163
  "output": 15,
@@ -151,9 +187,31 @@
151
187
  "output": 15,
152
188
  "cache_read": 0.3,
153
189
  "cache_write": 3.75
190
+ },
191
+ "claude-sonnet-5": {
192
+ "input": 2,
193
+ "output": 10,
194
+ "cache_read": 0.2,
195
+ "cache_write": 2.5
196
+ },
197
+ "claude-sonnet-5-5": {
198
+ "input": 2,
199
+ "output": 10,
200
+ "cache_read": 0.2,
201
+ "cache_write": 2.5
154
202
  }
155
203
  },
156
204
  "google": {
205
+ "deep-research-max-preview-04-2026": {
206
+ "input": 2,
207
+ "output": 12,
208
+ "cache_read": 0.2
209
+ },
210
+ "deep-research-preview-04-2026": {
211
+ "input": 2,
212
+ "output": 12,
213
+ "cache_read": 0.2
214
+ },
157
215
  "gemini-1.5-flash": {
158
216
  "input": 0.075,
159
217
  "output": 0.3,
@@ -178,10 +236,14 @@
178
236
  "input": 0.075,
179
237
  "output": 0.3
180
238
  },
239
+ "gemini-2.5-computer-use-preview-10-2025": {
240
+ "input": 1.25,
241
+ "output": 10
242
+ },
181
243
  "gemini-2.5-flash": {
182
244
  "input": 0.3,
183
245
  "output": 2.5,
184
- "cache_read": 0.075
246
+ "cache_read": 0.03
185
247
  },
186
248
  "gemini-2.5-flash-image": {
187
249
  "input": 0.3,
@@ -196,7 +258,7 @@
196
258
  "gemini-2.5-flash-lite": {
197
259
  "input": 0.1,
198
260
  "output": 0.4,
199
- "cache_read": 0.025
261
+ "cache_read": 0.01
200
262
  },
201
263
  "gemini-2.5-flash-lite-preview-06-17": {
202
264
  "input": 0.1,
@@ -230,7 +292,7 @@
230
292
  "gemini-2.5-pro": {
231
293
  "input": 1.25,
232
294
  "output": 10,
233
- "cache_read": 0.31
295
+ "cache_read": 0.125
234
296
  },
235
297
  "gemini-2.5-pro-preview-05-06": {
236
298
  "input": 1.25,
@@ -251,20 +313,48 @@
251
313
  "output": 3,
252
314
  "cache_read": 0.05
253
315
  },
316
+ "gemini-3-pro-image": {
317
+ "input": 2,
318
+ "output": 120
319
+ },
320
+ "gemini-3-pro-image-preview": {
321
+ "input": 2,
322
+ "output": 120
323
+ },
254
324
  "gemini-3-pro-preview": {
255
325
  "input": 2,
256
326
  "output": 12,
257
327
  "cache_read": 0.2
258
328
  },
329
+ "gemini-3.1-flash-image": {
330
+ "input": 0.5,
331
+ "output": 60
332
+ },
259
333
  "gemini-3.1-flash-image-preview": {
260
- "input": 0.25,
334
+ "input": 0.5,
261
335
  "output": 60
262
336
  },
337
+ "gemini-3.1-flash-lite": {
338
+ "input": 0.25,
339
+ "output": 1.5,
340
+ "cache_read": 0.025
341
+ },
342
+ "gemini-3.1-flash-lite-image": {
343
+ "input": 0.25,
344
+ "output": 30
345
+ },
263
346
  "gemini-3.1-flash-lite-preview": {
264
347
  "input": 0.25,
265
348
  "output": 1.5,
266
- "cache_read": 0.025,
267
- "cache_write": 1
349
+ "cache_read": 0.025
350
+ },
351
+ "gemini-3.1-flash-live-preview": {
352
+ "input": 0.75,
353
+ "output": 4.5
354
+ },
355
+ "gemini-3.1-flash-tts-preview": {
356
+ "input": 1,
357
+ "output": 20
268
358
  },
269
359
  "gemini-3.1-pro-preview": {
270
360
  "input": 2,
@@ -276,19 +366,52 @@
276
366
  "output": 12,
277
367
  "cache_read": 0.2
278
368
  },
369
+ "gemini-3.5-flash": {
370
+ "input": 1.5,
371
+ "output": 9,
372
+ "cache_read": 0.15
373
+ },
374
+ "gemini-3.5-flash-lite": {
375
+ "input": 0.3,
376
+ "output": 2.5,
377
+ "cache_read": 0.03
378
+ },
379
+ "gemini-3.5-live-translate-preview": {
380
+ "input": 3.5,
381
+ "output": 21
382
+ },
383
+ "gemini-3.6-flash": {
384
+ "input": 0.75,
385
+ "output": 3.75,
386
+ "cache_read": 0.075
387
+ },
388
+ "gemini-3.7-flash": {
389
+ "input": 0.75,
390
+ "output": 3.75,
391
+ "cache_read": 0.075
392
+ },
393
+ "gemini-3.8-flash": {
394
+ "input": 0.75,
395
+ "output": 3.75,
396
+ "cache_read": 0.075
397
+ },
279
398
  "gemini-embedding-001": {
280
399
  "input": 0.15,
281
400
  "output": 0
282
401
  },
402
+ "gemini-embedding-2": {
403
+ "input": 0.2,
404
+ "output": 0
405
+ },
283
406
  "gemini-flash-latest": {
284
- "input": 0.3,
285
- "output": 2.5,
407
+ "input": 0.75,
408
+ "output": 3.75,
286
409
  "cache_read": 0.075
287
410
  },
288
411
  "gemini-flash-lite-latest": {
289
- "input": 0.1,
290
- "output": 0.4,
291
- "cache_read": 0.025
412
+ "input": 0.3,
413
+ "output": 2.5,
414
+ "cache_read": 0.03
292
415
  },
293
416
  "gemini-live-2.5-flash": {
294
417
  "input": 0.5,
@@ -297,6 +420,18 @@
297
420
  "gemini-live-2.5-flash-preview-native-audio": {
298
421
  "input": 0.5,
299
422
  "output": 2
423
+ },
424
+ "gemini-omni-flash-preview": {
425
+ "input": 1.5,
426
+ "output": 17.5
427
+ },
428
+ "lyria-3-clip-preview": {
429
+ "input": 0,
430
+ "output": 0
431
+ },
432
+ "lyria-3-pro-preview": {
433
+ "input": 0,
434
+ "output": 0
300
435
  }
301
436
  },
302
437
  "moonshotai": {
@@ -330,6 +465,21 @@
330
465
  "output": 3,
331
466
  "cache_read": 0.1
332
467
  },
468
+ "kimi-k2.6": {
469
+ "input": 0.95,
470
+ "output": 4,
471
+ "cache_read": 0.16
472
+ },
473
+ "kimi-k2.7-code": {
474
+ "input": 0.95,
475
+ "output": 4,
476
+ "cache_read": 0.19
477
+ },
478
+ "kimi-k2.7-code-highspeed": {
479
+ "input": 1.9,
480
+ "output": 8,
481
+ "cache_read": 0.38
482
+ },
333
483
  "kimi-k3": {
334
484
  "input": 3,
335
485
  "output": 15,
@@ -345,7 +495,7 @@
345
495
  "gpt-3.5-turbo": {
346
496
  "input": 0.5,
347
497
  "output": 1.5,
348
- "cache_read": 1.25
498
+ "cache_read": 0
349
499
  },
350
500
  "gpt-4": {
351
501
  "input": 30,
@@ -368,7 +518,7 @@
368
518
  "gpt-4.1-nano": {
369
519
  "input": 0.1,
370
520
  "output": 0.4,
371
- "cache_read": 0.03
521
+ "cache_read": 0.025
372
522
  },
373
523
  "gpt-4o": {
374
524
  "input": 2.5,
@@ -392,7 +542,7 @@
392
542
  "gpt-4o-mini": {
393
543
  "input": 0.15,
394
544
  "output": 0.6,
395
- "cache_read": 0.08
545
+ "cache_read": 0.075
396
546
  },
397
547
  "gpt-5": {
398
548
  "input": 1.25,
@@ -425,7 +575,7 @@
425
575
  "gpt-5.1": {
426
576
  "input": 1.25,
427
577
  "output": 10,
428
- "cache_read": 0.13
578
+ "cache_read": 0.125
429
579
  },
430
580
  "gpt-5.1-chat-latest": {
431
581
  "input": 1.25,
@@ -466,6 +616,11 @@
466
616
  "input": 21,
467
617
  "output": 168
468
618
  },
619
+ "gpt-5.3-chat-latest": {
620
+ "input": 1.75,
621
+ "output": 14,
622
+ "cache_read": 0.175
623
+ },
469
624
  "gpt-5.3-codex": {
470
625
  "input": 1.75,
471
626
  "output": 14,
@@ -495,6 +650,85 @@
495
650
  "input": 30,
496
651
  "output": 180
497
652
  },
653
+ "gpt-5.5": {
654
+ "input": 5,
655
+ "output": 30,
656
+ "cache_read": 0.5
657
+ },
658
+ "gpt-5.5-pro": {
659
+ "input": 30,
660
+ "output": 180
661
+ },
662
+ "gpt-5.6": {
663
+ "input": 4,
664
+ "output": 20,
665
+ "cache_read": 0.4,
666
+ "cache_write": 5
667
+ },
668
+ "gpt-5.6-luna": {
669
+ "input": 0.2,
670
+ "output": 1.2,
671
+ "cache_read": 0.02,
672
+ "cache_write": 0.25
673
+ },
674
+ "gpt-5.6-sol": {
675
+ "input": 4,
676
+ "output": 20,
677
+ "cache_read": 0.4,
678
+ "cache_write": 5
679
+ },
680
+ "gpt-5.6-terra": {
681
+ "input": 2,
682
+ "output": 12,
683
+ "cache_read": 0.2,
684
+ "cache_write": 2.5
685
+ },
686
+ "gpt-6-astra": {
687
+ "input": 10,
688
+ "output": 50,
689
+ "cache_read": 1,
690
+ "cache_write": 12.5
691
+ },
692
+ "gpt-6-luna": {
693
+ "input": 0.1,
694
+ "output": 0.5,
695
+ "cache_read": 0.01,
696
+ "cache_write": 0.125
697
+ },
698
+ "gpt-6-sol": {
699
+ "input": 2,
700
+ "output": 10,
701
+ "cache_read": 0.2,
702
+ "cache_write": 2.5
703
+ },
704
+ "gpt-6.1-sol": {
705
+ "input": 2,
706
+ "output": 10,
707
+ "cache_read": 0.1,
708
+ "cache_write": 2.5
709
+ },
710
+ "gpt-daybreak-blue-latest": {
711
+ "input": 4,
712
+ "output": 20,
713
+ "cache_read": 0.4,
714
+ "cache_write": 5
715
+ },
716
+ "gpt-daybreak-red-latest": {
717
+ "input": 12.5,
718
+ "output": 75,
719
+ "cache_read": 1.25,
720
+ "cache_write": 15.625
721
+ },
722
+ "gpt-image-2": {
723
+ "input": 5,
724
+ "output": 30,
725
+ "cache_read": 1.25
726
+ },
727
+ "gpt-realtime-2.1": {
728
+ "input": 4,
729
+ "output": 24,
730
+ "cache_read": 0.4
731
+ },
498
732
  "o1": {
499
733
  "input": 15,
500
734
  "output": 60,
@@ -536,7 +770,7 @@
536
770
  "o4-mini": {
537
771
  "input": 1.1,
538
772
  "output": 4.4,
539
- "cache_read": 0.28
773
+ "cache_read": 0.275
540
774
  },
541
775
  "o4-mini-deep-research": {
542
776
  "input": 2,
@@ -653,25 +887,50 @@
653
887
  "cache_read": 0.05
654
888
  },
655
889
  "grok-4.20-0309-non-reasoning": {
656
- "input": 2,
657
- "output": 6,
890
+ "input": 1.25,
891
+ "output": 2.5,
658
892
  "cache_read": 0.2
659
893
  },
660
894
  "grok-4.20-0309-reasoning": {
661
- "input": 2,
662
- "output": 6,
895
+ "input": 1.25,
896
+ "output": 2.5,
663
897
  "cache_read": 0.2
664
898
  },
665
899
  "grok-4.20-multi-agent-0309": {
900
+ "input": 1.25,
901
+ "output": 2.5,
902
+ "cache_read": 0.2
903
+ },
904
+ "grok-4.3": {
905
+ "input": 1.25,
906
+ "output": 2.5,
907
+ "cache_read": 0.2
908
+ },
909
+ "grok-4.5": {
666
910
  "input": 2,
667
911
  "output": 6,
668
- "cache_read": 0.2
912
+ "cache_read": 0.3
913
+ },
914
+ "grok-4.6": {
915
+ "input": 2,
916
+ "output": 6,
917
+ "cache_read": 0.5
918
+ },
919
+ "grok-4.7": {
920
+ "input": 2,
921
+ "output": 6,
922
+ "cache_read": 0.5
669
923
  },
670
924
  "grok-beta": {
671
925
  "input": 5,
672
926
  "output": 15,
673
927
  "cache_read": 5
674
928
  },
929
+ "grok-build-0.1": {
930
+ "input": 1,
931
+ "output": 2,
932
+ "cache_read": 0.2
933
+ },
675
934
  "grok-code-fast-1": {
676
935
  "input": 0.2,
677
936
  "output": 1.5,
@@ -716,6 +975,12 @@
716
975
  "input": 0.3,
717
976
  "output": 0.9
718
977
  },
978
+ "glm-4.6v-flash": {
979
+ "input": 0,
980
+ "output": 0,
981
+ "cache_read": 0,
982
+ "cache_write": 0
983
+ },
719
984
  "glm-4.7": {
720
985
  "input": 0.6,
721
986
  "output": 2.2,
@@ -728,6 +993,12 @@
728
993
  "cache_read": 0,
729
994
  "cache_write": 0
730
995
  },
996
+ "glm-4.7-flashx": {
997
+ "input": 0.07,
998
+ "output": 0.4,
999
+ "cache_read": 0.01,
1000
+ "cache_write": 0
1001
+ },
731
1002
  "glm-5": {
732
1003
  "input": 1,
733
1004
  "output": 3.2,
@@ -739,6 +1010,42 @@
739
1010
  "output": 4,
740
1011
  "cache_read": 0.24,
741
1012
  "cache_write": 0
1013
+ },
1014
+ "glm-5.1": {
1015
+ "input": 1.4,
1016
+ "output": 4.4,
1017
+ "cache_read": 0.26,
1018
+ "cache_write": 0
1019
+ },
1020
+ "glm-5.2": {
1021
+ "input": 1.4,
1022
+ "output": 4.4,
1023
+ "cache_read": 0.26,
1024
+ "cache_write": 0
1025
+ },
1026
+ "glm-5.3": {
1027
+ "input": 1.4,
1028
+ "output": 4.4,
1029
+ "cache_read": 0.26,
1030
+ "cache_write": 0
1031
+ },
1032
+ "glm-5.3-flash": {
1033
+ "input": 0.15,
1034
+ "output": 0.5,
1035
+ "cache_read": 0.03,
1036
+ "cache_write": 0
1037
+ },
1038
+ "glm-5.3-flashx": {
1039
+ "input": 0.37,
1040
+ "output": 1.25,
1041
+ "cache_read": 0.075,
1042
+ "cache_write": 0
1043
+ },
1044
+ "glm-5v-turbo": {
1045
+ "input": 1.2,
1046
+ "output": 4,
1047
+ "cache_read": 0.24,
1048
+ "cache_write": 0
742
1049
  }
743
1050
  }
744
1051
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shows the home dir as "~" so pasted reports do not reveal the computer's user name:
3
+ * "/Users/alice/.config" -> "~/.config", "/Users/alice" -> "~". Only whole home-dir
4
+ * matches change; "/Users/alicesmith" stays as it is. Display only, never for reading files.
5
+ */
6
+ export declare function replaceHomeDirWithTilde(text: string, homeDir: string): string;
7
+ //# sourceMappingURL=home-dir-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-dir-display.d.ts","sourceRoot":"","sources":["../../src/lib/home-dir-display.ts"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAS7E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Characters that may end a home-dir match: a path separator (the path goes on below home),
3
+ * whitespace, or punctuation the reports put around paths. Anything else, e.g. the "s" in
4
+ * "/Users/alicesmith" or the "." in "/Users/alice.old", means a different folder.
5
+ *
6
+ * Whitespace ends a match on purpose, so prose such as "not found at /Users/alice is missing"
7
+ * hides the user name. The known cost: a folder whose name continues after a space, e.g.
8
+ * "/Users/alice backup/project", shows as "~ backup/project".
9
+ */
10
+ const HOME_DIR_END = "(?=$|[/\\\\\\s|,;:)\\]\"'`])";
11
+ /**
12
+ * What may come right before a home-dir match: the start of the text, whitespace, or a
13
+ * delimiter the reports put before paths ("path=", "(", a quote, "a | b", "key:"). Anything
14
+ * else, e.g. "/mnt/备份/Users/alice", means the match is deeper inside another path.
15
+ */
16
+ const HOME_DIR_START = "(?<=^|[\\s\"'`=(\\[:,|])";
17
+ function escapeRegExp(text) {
18
+ return text.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
19
+ }
20
+ /**
21
+ * The home dir without trailing separators, or null when it is empty or a filesystem root
22
+ * ("/", "C:\"), which would turn every path into "~".
23
+ */
24
+ function normalizeHomeDir(homeDir) {
25
+ const trimmed = homeDir.replace(/[/\\]+$/u, "");
26
+ if (trimmed === "" || /^[A-Za-z]:$/u.test(trimmed))
27
+ return null;
28
+ return trimmed;
29
+ }
30
+ function replaceWholeHomeDir(text, home) {
31
+ const pattern = new RegExp(`${HOME_DIR_START}${escapeRegExp(home)}${HOME_DIR_END}`, "gu");
32
+ return text.replace(pattern, "~");
33
+ }
34
+ /**
35
+ * Shows the home dir as "~" so pasted reports do not reveal the computer's user name:
36
+ * "/Users/alice/.config" -> "~/.config", "/Users/alice" -> "~". Only whole home-dir
37
+ * matches change; "/Users/alicesmith" stays as it is. Display only, never for reading files.
38
+ */
39
+ export function replaceHomeDirWithTilde(text, homeDir) {
40
+ const home = normalizeHomeDir(homeDir);
41
+ if (!home)
42
+ return text;
43
+ // A JSON-quoted Windows path doubles its backslashes, e.g. a quoted command in
44
+ // checked_commands: "C:\\Users\\Alice Smith\\.local\\bin\\claude" -> "~\\.local\\bin\\claude".
45
+ const jsonEscapedHome = home.replace(/\\/gu, "\\\\");
46
+ const withoutEscapedHome = jsonEscapedHome === home ? text : replaceWholeHomeDir(text, jsonEscapedHome);
47
+ return replaceWholeHomeDir(withoutEscapedHome, home);
48
+ }
49
+ //# sourceMappingURL=home-dir-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-dir-display.js","sourceRoot":"","sources":["../../src/lib/home-dir-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD;;;;GAIG;AACH,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAElD,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,OAAe;IACnE,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,+EAA+E;IAC/E,+FAA+F;IAC/F,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,kBAAkB,GACtB,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC/E,OAAO,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-installer.d.ts","sourceRoot":"","sources":["../../src/lib/init-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-installer.d.ts","sourceRoot":"","sources":["../../src/lib/init-installer.ts"],"names":[],"mappings":"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"}