@hpyperry/dsh-ref-lib 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +13 -14
  2. package/lib/client/RefLibCommandCard.d.ts +29 -0
  3. package/lib/client/RefLibCommandCard.d.ts.map +1 -0
  4. package/lib/client/RefLibCommandCard.js +48 -0
  5. package/lib/client/RefLibCommandCard.js.map +1 -0
  6. package/lib/client/RefLibDock.d.ts +4 -2
  7. package/lib/client/RefLibDock.d.ts.map +1 -1
  8. package/lib/client/RefLibDock.js +121 -37
  9. package/lib/client/RefLibDock.js.map +1 -1
  10. package/lib/client/RefLibPanel.d.ts +6 -4
  11. package/lib/client/RefLibPanel.d.ts.map +1 -1
  12. package/lib/client/RefLibPanel.js +69 -20
  13. package/lib/client/RefLibPanel.js.map +1 -1
  14. package/lib/client/index.d.ts.map +1 -1
  15. package/lib/client/index.js +13 -2
  16. package/lib/client/index.js.map +1 -1
  17. package/lib/client/locales.d.ts +30 -2
  18. package/lib/client/locales.d.ts.map +1 -1
  19. package/lib/client/locales.js +42 -8
  20. package/lib/client/locales.js.map +1 -1
  21. package/lib/client/refresh-guard.d.ts +31 -0
  22. package/lib/client/refresh-guard.d.ts.map +1 -0
  23. package/lib/client/refresh-guard.js +38 -0
  24. package/lib/client/refresh-guard.js.map +1 -0
  25. package/lib/client/styles.d.ts.map +1 -1
  26. package/lib/client/styles.js +269 -23
  27. package/lib/client/styles.js.map +1 -1
  28. package/lib/client.js +1141 -500
  29. package/lib/client.js.map +1 -1
  30. package/lib/commands.d.ts +2 -1
  31. package/lib/commands.d.ts.map +1 -1
  32. package/lib/commands.js +15 -3
  33. package/lib/commands.js.map +1 -1
  34. package/lib/index.d.ts +3 -2
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +9 -7
  37. package/lib/index.js.map +1 -1
  38. package/lib/logic.d.ts +16 -1
  39. package/lib/logic.d.ts.map +1 -1
  40. package/lib/logic.js +19 -0
  41. package/lib/logic.js.map +1 -1
  42. package/lib/render.d.ts +10 -4
  43. package/lib/render.d.ts.map +1 -1
  44. package/lib/render.js +113 -16
  45. package/lib/render.js.map +1 -1
  46. package/lib/routes.d.ts.map +1 -1
  47. package/lib/routes.js +46 -2
  48. package/lib/routes.js.map +1 -1
  49. package/lib/service.d.ts +52 -3
  50. package/lib/service.d.ts.map +1 -1
  51. package/lib/service.js +172 -14
  52. package/lib/service.js.map +1 -1
  53. package/lib/spec.d.ts +9 -0
  54. package/lib/spec.d.ts.map +1 -1
  55. package/lib/validate.d.ts +1 -1
  56. package/lib/validate.d.ts.map +1 -1
  57. package/lib/validate.js +11 -3
  58. package/lib/validate.js.map +1 -1
  59. package/package.json +17 -9
@@ -92,6 +92,22 @@ const CSS = `
92
92
  font-weight: 500;
93
93
  }
94
94
 
95
+ /* 失效条目计数角标(v9):红色系,与普通数量徽标区分。 */
96
+ .reflib-chipWarn {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ min-width: 18px;
101
+ height: 18px;
102
+ padding: 0 5px;
103
+ border-radius: 9px;
104
+ background: var(--dsw-alias-state-error-primary);
105
+ color: #fff;
106
+ font-size: 11px;
107
+ line-height: 18px;
108
+ font-weight: 500;
109
+ }
110
+
95
111
  /* ── 应用内目录浏览器(browse 后端)── */
96
112
  .reflib-browser {
97
113
  width: min(460px, 100%);
@@ -275,6 +291,12 @@ const CSS = `
275
291
  padding: 0 8px;
276
292
  }
277
293
 
294
+ .reflib-listItem {
295
+ display: flex;
296
+ flex-direction: column;
297
+ min-width: 0;
298
+ }
299
+
278
300
  .reflib-row {
279
301
  display: flex;
280
302
  align-items: center;
@@ -290,7 +312,7 @@ const CSS = `
290
312
  background: var(--dsw-alias-interactive-bg-hover);
291
313
  }
292
314
 
293
- .reflib-row[data-removing='true'] {
315
+ .reflib-listItem[data-removing='true'] {
294
316
  opacity: 0.55;
295
317
  pointer-events: none;
296
318
  }
@@ -301,6 +323,11 @@ const CSS = `
301
323
  color: var(--dsw-alias-label-tertiary);
302
324
  }
303
325
 
326
+ /* 失效条目行图标(v9):警示色。 */
327
+ .reflib-rowIconWarn {
328
+ color: var(--dsw-alias-state-error-primary);
329
+ }
330
+
304
331
  .reflib-rowBody {
305
332
  display: flex;
306
333
  flex: 1;
@@ -329,6 +356,26 @@ const CSS = `
329
356
  white-space: nowrap;
330
357
  }
331
358
 
359
+ /* 列表行用途说明(Description,v8):单行截断,与路径同属次行层级 */
360
+ .reflib-rowNote {
361
+ overflow: hidden;
362
+ color: var(--dsw-alias-label-secondary);
363
+ font-size: 12px;
364
+ line-height: 16px;
365
+ text-overflow: ellipsis;
366
+ white-space: nowrap;
367
+ }
368
+
369
+ /* 失效条目状态行(v9):红色警示文案,位于路径之下 */
370
+ .reflib-rowStatus {
371
+ overflow: hidden;
372
+ color: var(--dsw-alias-state-error-primary);
373
+ font-size: 12px;
374
+ line-height: 16px;
375
+ text-overflow: ellipsis;
376
+ white-space: nowrap;
377
+ }
378
+
332
379
  .reflib-rowRemove {
333
380
  display: inline-flex;
334
381
  align-items: center;
@@ -355,6 +402,120 @@ const CSS = `
355
402
  cursor: default;
356
403
  }
357
404
 
405
+ /* 详情/编辑入口按钮(与移除同尺寸,非危险 hover) */
406
+ .reflib-rowAction {
407
+ display: inline-flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ flex: none;
411
+ width: 28px;
412
+ height: 28px;
413
+ padding: 0;
414
+ border: none;
415
+ border-radius: 8px;
416
+ background: transparent;
417
+ color: var(--dsw-alias-label-tertiary);
418
+ cursor: pointer;
419
+ transition: background-color 120ms ease, color 120ms ease;
420
+ }
421
+
422
+ .reflib-rowAction:hover:not(:disabled) {
423
+ background: var(--dsw-alias-interactive-bg-hover);
424
+ color: var(--dsw-alias-label-primary);
425
+ }
426
+
427
+ .reflib-rowAction:disabled {
428
+ opacity: 0.4;
429
+ cursor: default;
430
+ }
431
+
432
+ /* 条目详情展开区(ID / 路径 / 用途编辑) */
433
+ .reflib-detail {
434
+ display: flex;
435
+ flex-direction: column;
436
+ gap: 5px;
437
+ margin: 2px 0 6px;
438
+ padding: 8px 10px 10px;
439
+ border-radius: 10px;
440
+ background: var(--dsw-alias-surface-inset, var(--dsw-alias-surface-raised));
441
+ min-width: 0;
442
+ }
443
+
444
+ .reflib-detailMeta {
445
+ display: flex;
446
+ align-items: baseline;
447
+ gap: 8px;
448
+ min-width: 0;
449
+ }
450
+
451
+ .reflib-detailKey {
452
+ flex: none;
453
+ font-size: 11px;
454
+ line-height: 16px;
455
+ color: var(--dsw-alias-label-caption);
456
+ }
457
+
458
+ .reflib-detailValue {
459
+ overflow: hidden;
460
+ min-width: 0;
461
+ font-size: 12px;
462
+ line-height: 16px;
463
+ color: var(--dsw-alias-label-secondary);
464
+ text-overflow: ellipsis;
465
+ white-space: nowrap;
466
+ }
467
+
468
+ .reflib-detailActions {
469
+ display: flex;
470
+ justify-content: flex-end;
471
+ gap: 6px;
472
+ margin-top: 2px;
473
+ }
474
+
475
+ /* 用途说明多行输入(添加表单 + 详情编辑共用) */
476
+ .reflib-noteWrap {
477
+ position: relative;
478
+ display: flex;
479
+ min-width: 0;
480
+ }
481
+
482
+ .reflib-noteTextarea {
483
+ width: 100%;
484
+ box-sizing: border-box;
485
+ padding: 6px 8px;
486
+ border: 1px solid var(--dsw-alias-border-l2);
487
+ border-radius: 8px;
488
+ background: var(--dsw-alias-surface-field);
489
+ color: var(--dsw-alias-label-primary);
490
+ font: inherit;
491
+ font-size: 13px;
492
+ line-height: 18px;
493
+ resize: vertical;
494
+ min-height: 40px;
495
+ }
496
+
497
+ .reflib-noteTextarea:focus {
498
+ outline: 2px solid var(--dsw-alias-focus-ring, var(--dsw-alias-state-info-primary));
499
+ outline-offset: -1px;
500
+ }
501
+
502
+ .reflib-noteTextarea:disabled {
503
+ opacity: 0.5;
504
+ }
505
+
506
+ .reflib-noteCount {
507
+ position: absolute;
508
+ right: 8px;
509
+ bottom: 6px;
510
+ padding: 0 4px;
511
+ border-radius: 4px;
512
+ background: var(--dsw-alias-surface-field);
513
+ font-size: 10px;
514
+ line-height: 14px;
515
+ color: var(--dsw-alias-label-caption);
516
+ pointer-events: none;
517
+ }
518
+
358
519
  /* 空态 / 加载态 / 错误态 */
359
520
  .reflib-status {
360
521
  display: flex;
@@ -420,9 +581,28 @@ const CSS = `
420
581
  background: var(--dsw-alias-border-l2);
421
582
  }
422
583
 
584
+ /* ── 管理面板 Modal(v8 优化)──
585
+ 宽度放宽到约 1/3 屏(上限 560px);进入动画为柔和缓出(easeOutQuint 风格:
586
+ 280ms 浮起 + 淡入,位移 12px→0、scale 0.96→1),无回弹——更从容、高级感。 */
587
+ .reflib-modal {
588
+ width: min(33vw, 560px);
589
+ animation: reflib-pop 280ms cubic-bezier(0.16, 1, 0.3, 1);
590
+ }
591
+
592
+ @keyframes reflib-pop {
593
+ 0% {
594
+ opacity: 0;
595
+ transform: scale(0.96) translateY(12px);
596
+ }
597
+ 100% {
598
+ opacity: 1;
599
+ transform: scale(1) translateY(0);
600
+ }
601
+ }
602
+
423
603
  /* ── 添加表单 ──
424
- 两组操作分离(优化点 2.1):手动输入路径 + 「添加」是一组(主路径);
425
- 「选择目录」是另一组备选方式,独占一行,避免并排造成困惑。 */
604
+ 统一表单(v8 UI 重构):路径(可输入 / 浏览填充)+ 用途(可选)同一容器,
605
+ 同一「添加」按钮提交——用途与路径强关联,浏览不再直接添加。 */
426
606
  .reflib-add {
427
607
  display: flex;
428
608
  flex-direction: column;
@@ -437,25 +617,6 @@ const CSS = `
437
617
  color: var(--dsw-alias-label-secondary);
438
618
  }
439
619
 
440
- /* 主方式:选择目录 —— 全宽主按钮(优先级最高) */
441
- .reflib-addBrowseMain {
442
- width: 100%;
443
- }
444
-
445
- /* 备选:手动输入路径组 */
446
- .reflib-addManual {
447
- display: flex;
448
- flex-direction: column;
449
- gap: 6px;
450
- min-width: 0;
451
- }
452
-
453
- .reflib-addManualLabel {
454
- font-size: 12px;
455
- line-height: 16px;
456
- color: var(--dsw-alias-label-caption);
457
- }
458
-
459
620
  .reflib-addRow {
460
621
  display: flex;
461
622
  align-items: center;
@@ -477,13 +638,98 @@ const CSS = `
477
638
  line-height: 18px;
478
639
  }
479
640
 
641
+ /* 全宽「添加」主按钮 */
642
+ .reflib-addSubmit {
643
+ width: 100%;
644
+ }
645
+
480
646
  .reflib-addHint {
481
647
  font-size: 11px;
482
648
  line-height: 16px;
483
649
  color: var(--dsw-alias-label-caption);
484
650
  }
485
651
 
486
- /* 窄视口:主路径行换行,输入框占满一行 */
652
+ /* ── /ref-lib 命令结果卡片(conversation.chat.commandview)── */
653
+ .reflib-cmd {
654
+ display: flex;
655
+ flex-direction: column;
656
+ gap: 6px;
657
+ min-width: 0;
658
+ }
659
+
660
+ .reflib-cmdHead {
661
+ display: flex;
662
+ align-items: center;
663
+ gap: 8px;
664
+ min-width: 0;
665
+ }
666
+
667
+ .reflib-cmdHeadIcon {
668
+ flex: none;
669
+ }
670
+
671
+ .reflib-cmdName {
672
+ flex: none;
673
+ color: var(--dsw-alias-label-primary);
674
+ font-size: 14px;
675
+ line-height: 20px;
676
+ font-weight: 500;
677
+ }
678
+
679
+ /* 摘要行 = 结果首行;过长单行省略(完整结果见下方 body) */
680
+ .reflib-cmdSummary {
681
+ min-width: 0;
682
+ flex: 1 1 auto;
683
+ overflow: hidden;
684
+ color: var(--dsw-alias-label-tertiary);
685
+ font-size: 13px;
686
+ line-height: 20px;
687
+ text-overflow: ellipsis;
688
+ white-space: nowrap;
689
+ }
690
+
691
+ .reflib-cmdSummary[data-error] {
692
+ color: var(--dsw-alias-state-error-primary);
693
+ }
694
+
695
+ .reflib-cmdCopy {
696
+ flex: none;
697
+ display: inline-flex;
698
+ align-items: center;
699
+ gap: 4px;
700
+ padding: 2px 8px;
701
+ border: 1px solid var(--dsw-alias-border-l1);
702
+ border-radius: 6px;
703
+ background: transparent;
704
+ color: var(--dsw-alias-label-secondary);
705
+ font-size: 12px;
706
+ line-height: 18px;
707
+ cursor: pointer;
708
+ }
709
+
710
+ .reflib-cmdCopy:hover {
711
+ background: var(--dsw-alias-interactive-bg-hover);
712
+ }
713
+
714
+ /* 完整结果:默认全展开(无 max-height 截断),超宽自动换行 */
715
+ .reflib-cmdBody {
716
+ margin: 0;
717
+ padding: 10px 14px;
718
+ overflow: auto;
719
+ border: 1px solid var(--dsw-alias-border-l1);
720
+ border-radius: 10px;
721
+ background: var(--dsw-alias-markdown-code-block);
722
+ color: var(--dsw-alias-label-primary);
723
+ font: var(--dsw-font-markdown-code-block-small);
724
+ white-space: pre-wrap;
725
+ word-break: break-word;
726
+ }
727
+
728
+ .reflib-cmdBody[data-error] {
729
+ color: var(--dsw-alias-state-error-primary);
730
+ }
731
+
732
+ /* 窄视口:路径行换行,输入框占满一行 */
487
733
  @media (max-width: 440px) {
488
734
  .reflib-addRow {
489
735
  flex-wrap: wrap;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yDAAyD;AACzD,MAAM,SAAS,GAAG,uBAAuB,CAAA;AACzC,0BAA0B;AAC1B,MAAM,YAAY,GAAG,8BAA8B,CAAA;AAEnD,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmeX,CAAA;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,IAAI,QAAQ,CAAC,aAAa,CAAC,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,OAAM;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAA;IAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;IACpC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yDAAyD;AACzD,MAAM,SAAS,GAAG,uBAAuB,CAAA;AACzC,0BAA0B;AAC1B,MAAM,YAAY,GAAG,8BAA8B,CAAA;AAEnD,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAytBX,CAAA;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,IAAI,QAAQ,CAAC,aAAa,CAAC,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,OAAM;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAA;IAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;IACpC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC"}