@hachej/boring-ui-kit 0.4.2 → 0.4.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 (60) hide show
  1. package/README.md +51 -1
  2. package/bin/boring-ui-blocks.mjs +29 -0
  3. package/dist/canvas-editor-native.d.ts +8 -1
  4. package/dist/canvas-editor-native.js +13 -7
  5. package/dist/canvas-editor.d.ts +4 -2
  6. package/dist/canvas-editor.js +5 -0
  7. package/dist/chat-outbox.d.ts +18 -0
  8. package/dist/chat-outbox.js +12 -0
  9. package/dist/file-tree-view.d.ts +29 -1
  10. package/dist/file-tree-view.js +74 -7
  11. package/dist/mark-store.d.ts +38 -0
  12. package/dist/mark-store.js +84 -0
  13. package/dist/markdown-editor.d.ts +6 -0
  14. package/dist/markdown-editor.js +17 -2
  15. package/dist/markdown-highlight-layer.d.ts +26 -0
  16. package/dist/markdown-highlight-layer.js +107 -0
  17. package/dist/markdown-quote.d.ts +23 -0
  18. package/dist/markdown-quote.js +39 -0
  19. package/dist/native-chat.d.ts +21 -0
  20. package/dist/native-chat.js +111 -7
  21. package/dist/remote-chat.js +16 -14
  22. package/dist/shared-chat/error.d.ts +10 -0
  23. package/dist/shared-chat/error.js +13 -0
  24. package/dist/shared-chat/fake.d.ts +39 -0
  25. package/dist/shared-chat/fake.js +90 -0
  26. package/dist/shared-chat/index.d.ts +51 -0
  27. package/dist/shared-chat/index.js +255 -0
  28. package/dist/shared-chat/socket.d.ts +20 -0
  29. package/dist/shared-chat/socket.js +114 -0
  30. package/dist/shared-chat/source.d.ts +117 -0
  31. package/dist/shared-chat/source.js +6 -0
  32. package/package.json +15 -3
  33. package/r/agent-target.json +36 -0
  34. package/r/app-shell.json +26 -11
  35. package/r/board-viewer.json +49 -0
  36. package/r/button.json +1 -1
  37. package/r/diagram-viewer.json +42 -0
  38. package/r/dock.json +1 -1
  39. package/r/documents.json +11 -11
  40. package/r/feedback-preview.json +1 -1
  41. package/r/feedback.json +6 -6
  42. package/r/file-tree.json +7 -6
  43. package/r/highlights.json +29 -0
  44. package/r/html-viewer.json +3 -3
  45. package/r/maquette-viewer.json +10 -13
  46. package/r/markdown-editor.json +3 -3
  47. package/r/mockup-viewer.json +45 -0
  48. package/r/pi-ambient.json +7 -7
  49. package/r/pi-app.json +21 -18
  50. package/r/pi-chat.json +28 -20
  51. package/r/pi-workspace.json +4 -4
  52. package/r/provider-setup.json +2 -2
  53. package/r/record-viewer.json +40 -0
  54. package/r/registry.json +449 -83
  55. package/r/requests-board.json +41 -0
  56. package/r/shared-chat.json +79 -0
  57. package/r/task-list-viewer.json +2 -2
  58. package/r/theme.json +15 -0
  59. package/r/version-history.json +3 -3
  60. package/r/viewers.json +16 -10
package/r/registry.json CHANGED
@@ -28,6 +28,11 @@
28
28
  "color-border": "var(--border)",
29
29
  "color-input": "var(--input)",
30
30
  "color-ring": "var(--ring)",
31
+ "color-chart-1": "var(--chart-1)",
32
+ "color-chart-2": "var(--chart-2)",
33
+ "color-chart-3": "var(--chart-3)",
34
+ "color-chart-4": "var(--chart-4)",
35
+ "color-chart-5": "var(--chart-5)",
31
36
  "radius-sm": "calc(var(--radius) - 4px)",
32
37
  "radius-md": "calc(var(--radius) - 2px)",
33
38
  "radius-lg": "var(--radius)",
@@ -62,6 +67,11 @@
62
67
  "border": "oklch(0.92 0.004 286.32)",
63
68
  "input": "oklch(0.89 0.005 286.32)",
64
69
  "ring": "oklch(0.55 0.02 286.067)",
70
+ "chart-1": "oklch(0.646 0.222 41.116)",
71
+ "chart-2": "oklch(0.6 0.118 184.704)",
72
+ "chart-3": "oklch(0.398 0.07 227.392)",
73
+ "chart-4": "oklch(0.828 0.189 84.429)",
74
+ "chart-5": "oklch(0.769 0.188 70.08)",
65
75
  "shell": "oklch(0.975 0.002 286)",
66
76
  "shadow-xs": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
67
77
  "shadow-sm": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
@@ -89,6 +99,11 @@
89
99
  "border": "oklch(1 0 0 / 11%)",
90
100
  "input": "oklch(1 0 0 / 16%)",
91
101
  "ring": "oklch(0.65 0.02 286.067)",
102
+ "chart-1": "oklch(0.488 0.243 264.376)",
103
+ "chart-2": "oklch(0.696 0.17 162.48)",
104
+ "chart-3": "oklch(0.769 0.188 70.08)",
105
+ "chart-4": "oklch(0.627 0.265 303.9)",
106
+ "chart-5": "oklch(0.645 0.246 16.439)",
92
107
  "shell": "oklch(0.13 0.005 285.823)",
93
108
  "shadow-xs": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
94
109
  "shadow-sm": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
@@ -133,7 +148,7 @@
133
148
  "lucide-react@^1.51.0"
134
149
  ],
135
150
  "registryDependencies": [
136
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
151
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
137
152
  "dropdown-menu",
138
153
  "button",
139
154
  "toggle",
@@ -161,8 +176,8 @@
161
176
  "title": "Markdown editor",
162
177
  "description": "A host-owned styled wrapper over the concrete borrowed Markdown controller.",
163
178
  "dependencies": [
164
- "@hachej/boring-ui-kit@^0.4.2",
165
- "@hachej/boring-files@^0.4.2",
179
+ "@hachej/boring-ui-kit@^0.4.4",
180
+ "@hachej/boring-files@^0.4.4",
166
181
  "react@^19.0.0",
167
182
  "react-dom@^19.0.0",
168
183
  "marked@^17.0.6",
@@ -317,7 +332,7 @@
317
332
  },
318
333
  "docs": "Create and own a MarkdownController from @hachej/boring-ui-kit/markdown. Pass it to MarkdownEditor. The wrapper does not acquire resources or dispose the controller. Check the repository release notes for available npm versions; local tarball tests do not establish registry availability.",
319
334
  "registryDependencies": [
320
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json"
335
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json"
321
336
  ]
322
337
  },
323
338
  {
@@ -326,8 +341,8 @@
326
341
  "title": "HTML source and passive preview",
327
342
  "description": "Exact HTML source editing with a reconstructed passive preview and borrowed controller. Browser security qualification remains separate.",
328
343
  "dependencies": [
329
- "@hachej/boring-ui-kit@^0.4.2",
330
- "@hachej/boring-files@^0.4.2",
344
+ "@hachej/boring-ui-kit@^0.4.4",
345
+ "@hachej/boring-files@^0.4.4",
331
346
  "react@^19.0.0",
332
347
  "react-dom@^19.0.0"
333
348
  ],
@@ -375,7 +390,7 @@
375
390
  }
376
391
  },
377
392
  "registryDependencies": [
378
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json"
393
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json"
379
394
  ]
380
395
  },
381
396
  {
@@ -384,8 +399,8 @@
384
399
  "title": "Pi chat",
385
400
  "description": "A complete Tailwind chat over the borrowed native chat controller: composer, messages, one collapsible activity block per turn (tool calls and reasoning), message queue, history, a human-in-the-loop question card, an Approve / Deny card for host tools wrapped with requireApproval optional artifact cards that open generated content in the host's panel, and feedback cards for the opt-in feedback tool (lists, and Show offers that the host page resolves). Chat only: no layout. Owned, editable source; no AI SDK. The optional pi-ambient and pi-workspace blocks build on it.",
386
401
  "dependencies": [
387
- "@hachej/boring-ui-kit@^0.4.2",
388
- "@hachej/boring-files@^0.4.2",
402
+ "@hachej/boring-ui-kit@^0.4.4",
403
+ "@hachej/boring-files@^0.4.4",
389
404
  "react@^19.0.0",
390
405
  "react-dom@^19.0.0",
391
406
  "marked@^17.0.6",
@@ -396,11 +411,13 @@
396
411
  "@earendil-works/pi-ai@~1.2.0",
397
412
  "@modelcontextprotocol/sdk@^1.32.1",
398
413
  "lucide-react@^1.51.0",
399
- "@shadcn/react@0.3.1"
414
+ "@shadcn/react@0.3.1",
415
+ "zod@^4.6.5"
400
416
  ],
401
417
  "registryDependencies": [
402
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
403
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
418
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
419
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
420
+ "tooltip",
404
421
  "trace",
405
422
  "message",
406
423
  "message-scroller",
@@ -451,6 +468,11 @@
451
468
  "type": "registry:lib",
452
469
  "target": "components/pi-chat/artifact.ts"
453
470
  },
471
+ {
472
+ "path": "registry/pi-chat/camera-sheet.tsx",
473
+ "type": "registry:component",
474
+ "target": "components/pi-chat/camera-sheet.tsx"
475
+ },
454
476
  {
455
477
  "path": "registry/pi-chat/code-block.tsx",
456
478
  "type": "registry:component",
@@ -652,7 +674,7 @@
652
674
  "title": "Pi ambient agent",
653
675
  "description": "AmbientChat, a compact floating agent bar that grows into a chat window over an existing page, and AgentNotifications, toasts for finished, failed and waiting tasks (with the one guarded browser Notification helper). A block over the pi-chat item; its in-window artifact panel uses the pi-workspace layout.",
654
676
  "dependencies": [
655
- "@hachej/boring-ui-kit@^0.4.2",
677
+ "@hachej/boring-ui-kit@^0.4.4",
656
678
  "react@^19.0.0",
657
679
  "react-dom@^19.0.0",
658
680
  "@earendil-works/pi-durable@~1.2.0",
@@ -660,11 +682,11 @@
660
682
  "lucide-react@^1.51.0"
661
683
  ],
662
684
  "registryDependencies": [
663
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
664
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
665
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-workspace.json",
666
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
667
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
685
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
686
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
687
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-workspace.json",
688
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
689
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
668
690
  "message-scroller",
669
691
  "button",
670
692
  "toggle",
@@ -700,7 +722,7 @@
700
722
  "react@^19.0.0"
701
723
  ],
702
724
  "registryDependencies": [
703
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json"
725
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json"
704
726
  ],
705
727
  "files": [
706
728
  {
@@ -720,10 +742,10 @@
720
742
  "react-dom@^19.0.0"
721
743
  ],
722
744
  "registryDependencies": [
723
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
724
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
725
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
726
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/dock.json",
745
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
746
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
747
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
748
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/dock.json",
727
749
  "badge",
728
750
  "card"
729
751
  ],
@@ -740,17 +762,131 @@
740
762
  }
741
763
  ]
742
764
  },
765
+ {
766
+ "name": "mockup-viewer",
767
+ "type": "registry:block",
768
+ "title": "HTML mock-up viewer",
769
+ "description": "Sandboxed *.mockup.html artifacts with host theme variables, lazy Tailwind compilation and feedback point comments. Host presentation only; artifact scripts run in an opaque-origin InteractiveFrame, never in the host.",
770
+ "dependencies": [
771
+ "react@^19.0.0",
772
+ "lucide-react@^1.51.0",
773
+ "tailwindcss@4.3.3",
774
+ "zod@^4.6.5"
775
+ ],
776
+ "registryDependencies": [
777
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/viewers.json",
778
+ "badge",
779
+ "toggle",
780
+ "tooltip"
781
+ ],
782
+ "files": [
783
+ {
784
+ "path": "registry/mockup-viewer/mockup-viewer.tsx",
785
+ "type": "registry:component",
786
+ "target": "components/mockup-viewer/mockup-viewer.tsx"
787
+ },
788
+ {
789
+ "path": "registry/mockup-viewer/mockup-frame.ts",
790
+ "type": "registry:lib",
791
+ "target": "components/mockup-viewer/mockup-frame.ts"
792
+ },
793
+ {
794
+ "path": "registry/mockup-viewer/mockup-compile.ts",
795
+ "type": "registry:lib",
796
+ "target": "components/mockup-viewer/mockup-compile.ts"
797
+ },
798
+ {
799
+ "path": "registry/mockup-viewer/mockup-tailwind.ts",
800
+ "type": "registry:lib",
801
+ "target": "components/mockup-viewer/mockup-tailwind.ts"
802
+ }
803
+ ]
804
+ },
805
+ {
806
+ "name": "record-viewer",
807
+ "type": "registry:component",
808
+ "title": "Record viewer",
809
+ "description": "Typed RecordTable and RecordList, with grouping, app-defined status badges and host row actions. createRecordsKind renders *.records.json (records@1), with a phone list and exact raw-text fallback for invalid files. English and French labels and locale formatting.",
810
+ "dependencies": [
811
+ "react@^19.0.0",
812
+ "lucide-react@^1.51.0"
813
+ ],
814
+ "registryDependencies": [
815
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
816
+ "table",
817
+ "badge",
818
+ "item",
819
+ "button",
820
+ "alert",
821
+ "empty"
822
+ ],
823
+ "files": [
824
+ {
825
+ "path": "registry/record-viewer/records.ts",
826
+ "type": "registry:lib",
827
+ "target": "components/record-viewer/records.ts"
828
+ },
829
+ {
830
+ "path": "registry/record-viewer/records-labels.ts",
831
+ "type": "registry:lib",
832
+ "target": "components/record-viewer/records-labels.ts"
833
+ },
834
+ {
835
+ "path": "registry/record-viewer/record-viewer.tsx",
836
+ "type": "registry:component",
837
+ "target": "components/record-viewer/record-viewer.tsx"
838
+ }
839
+ ]
840
+ },
841
+ {
842
+ "name": "diagram-viewer",
843
+ "type": "registry:component",
844
+ "title": "Diagram viewer",
845
+ "description": "DiagramViewer, DiagramView and diagramKind: an agent's *.diagram.json (format v1, versioned: nodes, edges, optional groups, highlighted path and note) as boxes and numbered arrows with a legend that says what happens and who acts. Layers run left to right while they fit and top to bottom on a phone, scrolling inside their own box; no layout library. A superset of a maquette's workflow, which the maquette viewer draws with DiagramView. The pi-app artifact panel shows .diagram.json files with it by default; app artifactKinds win.",
846
+ "dependencies": [
847
+ "react@^19.0.0",
848
+ "lucide-react@^1.51.0"
849
+ ],
850
+ "registryDependencies": [
851
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
852
+ "alert",
853
+ "badge"
854
+ ],
855
+ "files": [
856
+ {
857
+ "path": "registry/diagram-viewer/diagram.ts",
858
+ "type": "registry:lib",
859
+ "target": "components/diagram-viewer/diagram.ts"
860
+ },
861
+ {
862
+ "path": "registry/diagram-viewer/diagram-labels.ts",
863
+ "type": "registry:lib",
864
+ "target": "components/diagram-viewer/diagram-labels.ts"
865
+ },
866
+ {
867
+ "path": "registry/diagram-viewer/diagram-view.tsx",
868
+ "type": "registry:component",
869
+ "target": "components/diagram-viewer/diagram-view.tsx"
870
+ },
871
+ {
872
+ "path": "registry/diagram-viewer/diagram-viewer.tsx",
873
+ "type": "registry:component",
874
+ "target": "components/diagram-viewer/diagram-viewer.tsx"
875
+ }
876
+ ]
877
+ },
743
878
  {
744
879
  "name": "maquette-viewer",
745
880
  "type": "registry:component",
746
881
  "title": "Maquette viewer",
747
- "description": "MaquetteViewer and maquetteKind: a PM agent's *.maquette.json mock-up (format v1, versioned) one screen at a time, drawn from the host's shadcn components, under one thin icon bar: Back, previous and next (also arrow keys and swipe), and a menu with guided tours and How it works (the workflow diagram in a dialog). Optional phone or desktop frame and #screen=<id> deep links. The pi-app artifact panel shows .maquette.json files with it by default; app artifactKinds win.",
882
+ "description": "MaquetteViewer and maquetteKind: a PM agent's *.maquette.json mock-up (format v1, versioned) one screen at a time, drawn from the host's shadcn components, under one thin icon bar: Back, previous and next (also arrow keys and swipe), an optional comment icon (point mode of the feedback item: a note pinned on a block names the maquette path, screen id and block id) and a menu with guided tours and How it works (the workflow, inline or a linked *.diagram.json, drawn by the diagram-viewer item in a dialog). Optional phone or desktop frame and #screen=<id> deep links. The pi-app artifact panel shows .maquette.json files with it by default; app artifactKinds win.",
748
883
  "dependencies": [
749
884
  "react@^19.0.0",
750
885
  "lucide-react@^1.51.0"
751
886
  ],
752
887
  "registryDependencies": [
753
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
888
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
889
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/diagram-viewer.json",
754
890
  "alert",
755
891
  "badge",
756
892
  "bubble",
@@ -765,7 +901,9 @@
765
901
  "table",
766
902
  "dialog",
767
903
  "dropdown-menu",
768
- "popover"
904
+ "popover",
905
+ "toggle",
906
+ "tooltip"
769
907
  ],
770
908
  "files": [
771
909
  {
@@ -783,11 +921,6 @@
783
921
  "type": "registry:component",
784
922
  "target": "components/maquette-viewer/maquette-blocks.tsx"
785
923
  },
786
- {
787
- "path": "registry/maquette-viewer/maquette-diagram.tsx",
788
- "type": "registry:component",
789
- "target": "components/maquette-viewer/maquette-diagram.tsx"
790
- },
791
924
  {
792
925
  "path": "registry/maquette-viewer/maquette-viewer.tsx",
793
926
  "type": "registry:component",
@@ -824,29 +957,146 @@
824
957
  }
825
958
  }
826
959
  },
960
+ {
961
+ "name": "board-viewer",
962
+ "type": "registry:block",
963
+ "title": "Board viewer",
964
+ "description": "A board@1 artifact kind for *.board.json. Lazy native tldraw projection of maquette screens, sandboxed HTML mock-ups, goto arrows and notes. Conditional board-file autosave; phone viewing without accidental frame edits. Hosts supply their resource client, asset URLs and license key.",
965
+ "dependencies": [
966
+ "@hachej/boring-ui-kit@^0.4.4",
967
+ "@hachej/boring-files@^0.4.4",
968
+ "react@^19.0.0",
969
+ "lucide-react@1.51.0",
970
+ "tldraw@5.5.2"
971
+ ],
972
+ "registryDependencies": [
973
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/maquette-viewer.json",
974
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/mockup-viewer.json",
975
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
976
+ "button",
977
+ "alert",
978
+ "card",
979
+ "tooltip"
980
+ ],
981
+ "files": [
982
+ {
983
+ "path": "registry/board-viewer/board.ts",
984
+ "type": "registry:lib",
985
+ "target": "components/board-viewer/board.ts"
986
+ },
987
+ {
988
+ "path": "registry/board-viewer/board-viewer.tsx",
989
+ "type": "registry:component",
990
+ "target": "components/board-viewer/board-viewer.tsx"
991
+ },
992
+ {
993
+ "path": "registry/board-viewer/board-canvas.tsx",
994
+ "type": "registry:component",
995
+ "target": "components/board-viewer/board-canvas.tsx"
996
+ },
997
+ {
998
+ "path": "registry/board-viewer/board-props.ts",
999
+ "type": "registry:lib",
1000
+ "target": "components/board-viewer/board-props.ts"
1001
+ }
1002
+ ]
1003
+ },
1004
+ {
1005
+ "name": "shared-chat",
1006
+ "type": "registry:block",
1007
+ "title": "Shared chat",
1008
+ "description": "Optional multi-party host log presentation over PiChat's generic composition seams. No agent runtime or speaking policy.",
1009
+ "dependencies": [
1010
+ "@hachej/boring-ui-kit@^0.4.4",
1011
+ "react@^19.0.0",
1012
+ "lucide-react@^1.51.0"
1013
+ ],
1014
+ "registryDependencies": [
1015
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
1016
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
1017
+ "avatar",
1018
+ "badge",
1019
+ "button",
1020
+ "card",
1021
+ "drawer",
1022
+ "popover",
1023
+ "tooltip",
1024
+ "trace",
1025
+ "spinner",
1026
+ "item",
1027
+ "message",
1028
+ "bubble",
1029
+ "message-scroller"
1030
+ ],
1031
+ "files": [
1032
+ {
1033
+ "path": "registry/shared-chat/shared-chat.tsx",
1034
+ "type": "registry:component",
1035
+ "target": "components/shared-chat/shared-chat.tsx"
1036
+ },
1037
+ {
1038
+ "path": "registry/shared-chat/use-shared-chat.tsx",
1039
+ "type": "registry:component",
1040
+ "target": "components/shared-chat/use-shared-chat.tsx"
1041
+ },
1042
+ {
1043
+ "path": "registry/shared-chat/messages.tsx",
1044
+ "type": "registry:component",
1045
+ "target": "components/shared-chat/messages.tsx"
1046
+ },
1047
+ {
1048
+ "path": "registry/shared-chat/timeline.tsx",
1049
+ "type": "registry:component",
1050
+ "target": "components/shared-chat/timeline.tsx"
1051
+ },
1052
+ {
1053
+ "path": "registry/shared-chat/host-trace.tsx",
1054
+ "type": "registry:component",
1055
+ "target": "components/shared-chat/host-trace.tsx"
1056
+ },
1057
+ {
1058
+ "path": "registry/shared-chat/text.tsx",
1059
+ "type": "registry:component",
1060
+ "target": "components/shared-chat/text.tsx"
1061
+ },
1062
+ {
1063
+ "path": "registry/shared-chat/shared-labels.ts",
1064
+ "type": "registry:lib",
1065
+ "target": "components/shared-chat/shared-labels.ts"
1066
+ },
1067
+ {
1068
+ "path": "registry/shared-chat/shared-labels-fr.ts",
1069
+ "type": "registry:lib",
1070
+ "target": "components/shared-chat/shared-labels-fr.ts"
1071
+ }
1072
+ ]
1073
+ },
827
1074
  {
828
1075
  "name": "pi-app",
829
1076
  "type": "registry:block",
830
1077
  "title": "Pi agent app",
831
1078
  "description": "AgentWorkspace: a whole agent page in one component. Left: the sessions pane (search, New, rename, archive, delete; collapsible, a drawer on a narrow screen). Center: PiChat. Right: the artifact viewers (artifact panel with versions, file viewer, auto-open of new artifacts) in the ArtifactWorkspace panel, a full-screen sheet on a phone. layout=\"embedded\" drops the left column for one compact top bar (title, History, Library, New) that joins an app-shell screen header. Props are data and callbacks; hooks for the conversations handler (useConversations), the chat transport (useRemoteChat) and saved resources (useSaved).",
832
1079
  "dependencies": [
833
- "@hachej/boring-ui-kit@^0.4.2",
834
- "@hachej/boring-files@^0.4.2",
1080
+ "@hachej/boring-ui-kit@^0.4.4",
1081
+ "@hachej/boring-files@^0.4.4",
835
1082
  "react@^19.0.0",
836
1083
  "react-dom@^19.0.0",
837
1084
  "lucide-react@^1.51.0"
838
1085
  ],
839
1086
  "registryDependencies": [
840
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
841
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
842
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-workspace.json",
843
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/viewers.json",
844
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/maquette-viewer.json",
845
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
846
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
1087
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
1088
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
1089
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-workspace.json",
1090
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/viewers.json",
1091
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/maquette-viewer.json",
1092
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/diagram-viewer.json",
1093
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/mockup-viewer.json",
1094
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/record-viewer.json",
1095
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
1096
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
847
1097
  "drawer",
848
1098
  "button",
849
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/file-tree.json",
1099
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/file-tree.json",
850
1100
  "dropdown-menu",
851
1101
  "scroll-area",
852
1102
  "separator",
@@ -933,19 +1183,19 @@
933
1183
  "title": "App shell: layouts, list/detail and agent layer",
934
1184
  "description": "AppShell with three layouts. B \"workspace\" puts a ListDetail on a screen (phone: the list, then the detail as a stack step with Back; wide: a 20rem list and the detail side by side, sidebar as an icon rail). C \"chat\" wraps the app's own AgentWorkspace (untouched, passed as the nav item's render; install the pi-app item yourself) in the same sidebar, account menu and header; it takes no shell agent. A \"screen\": one screen at a time, every screen kept mounted. On a phone bottom tabs (at most four; more give three plus a « Plus » sheet) and an avatar button that opens the account sheet; on a wide screen the shadcn sidebar (icon rail, NavUser). One header per screen through useScreenHeader (title, subtitle, back, up to two actions, the rest behind « … »). The account menu holds « Améliorer l'app » (the improve agent), the app's own entries and sign out. AppSheet is the one bottom sheet (one open at a time, Back closes it). It mounts the AgentLayer: one agent's PiChat above the app (phone: a drawer with peek, half and full snap points; wide: a right panel), the improve agent in the same layer, optional push-to-talk and point mode. Also useAgentContext and readAgentContext (the screen on show travels as `context` with each submit) and useBackLayer, the one Back manager. Built on explicitly pinned Base UI drawer and dropdown-menu recipes, plus the sidebar and avatar of the host's own shadcn style.",
935
1185
  "dependencies": [
936
- "@hachej/boring-feedback@^0.4.2",
937
- "@hachej/boring-ui-kit@^0.4.2",
1186
+ "@hachej/boring-feedback@^0.4.4",
1187
+ "@hachej/boring-ui-kit@^0.4.4",
938
1188
  "@base-ui/react@^1.9.0",
939
1189
  "react@^19.0.0",
940
1190
  "react-dom@^19.0.0",
941
1191
  "lucide-react@^1.51.0"
942
1192
  ],
943
1193
  "registryDependencies": [
944
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
945
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/dock.json",
946
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/feedback.json",
947
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
948
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
1194
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
1195
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/dock.json",
1196
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/feedback.json",
1197
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
1198
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
949
1199
  "drawer",
950
1200
  "sidebar",
951
1201
  "avatar",
@@ -958,6 +1208,9 @@
958
1208
  ],
959
1209
  "css": {
960
1210
  "@layer base": {
1211
+ ".app-shell :where(*, ::before, ::after)": {
1212
+ "border-color": "var(--border)"
1213
+ },
961
1214
  ".app-shell :where(button, [role=button])": {
962
1215
  "appearance": "none",
963
1216
  "background-color": "transparent",
@@ -992,6 +1245,11 @@
992
1245
  "type": "registry:lib",
993
1246
  "target": "components/app-shell/agent-context.ts"
994
1247
  },
1248
+ {
1249
+ "path": "registry/app-shell/agent-link.ts",
1250
+ "type": "registry:lib",
1251
+ "target": "components/app-shell/agent-link.ts"
1252
+ },
995
1253
  {
996
1254
  "path": "registry/app-shell/back.ts",
997
1255
  "type": "registry:lib",
@@ -1061,6 +1319,11 @@
1061
1319
  "path": "registry/app-shell/index.ts",
1062
1320
  "type": "registry:lib",
1063
1321
  "target": "components/app-shell/index.ts"
1322
+ },
1323
+ {
1324
+ "path": "registry/app-shell/use-dictation.ts",
1325
+ "type": "registry:hook",
1326
+ "target": "components/app-shell/use-dictation.ts"
1064
1327
  }
1065
1328
  ]
1066
1329
  },
@@ -1068,10 +1331,10 @@
1068
1331
  "name": "viewers",
1069
1332
  "type": "registry:component",
1070
1333
  "title": "Viewers",
1071
- "description": "The standard viewer top bar (title, status, viewer controls, Refresh, Share, Copy, Download, Open in new tab, Close, overflow menu) with Tailwind panes over it: the Markdown editor with a formatting toolbar and prose styling, the passive HTML preview and source editor, an image viewer with zoom and pan, and a PDF viewer. Owned, editable source over the borrowed controllers; no AI SDK.",
1334
+ "description": "The standard viewer top bar (title, status, viewer controls, Refresh, Share, Copy, Download, Open in new tab, Close, overflow menu) with Tailwind panes over it: the Markdown editor with a formatting toolbar and prose styling, the passive HTML preview and source editor, an image viewer with zoom and pan, a PDF viewer, and LocalFileViewer for browser-only files. Owned, editable source over the borrowed controllers; no AI SDK.",
1072
1335
  "dependencies": [
1073
- "@hachej/boring-ui-kit@^0.4.2",
1074
- "@hachej/boring-files@^0.4.2",
1336
+ "@hachej/boring-ui-kit@^0.4.4",
1337
+ "@hachej/boring-files@^0.4.4",
1075
1338
  "react@^19.0.0",
1076
1339
  "react-dom@^19.0.0",
1077
1340
  "marked@^17.0.6",
@@ -1091,12 +1354,12 @@
1091
1354
  "pdfjs-dist@6.3.289"
1092
1355
  ],
1093
1356
  "registryDependencies": [
1094
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
1095
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
1096
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
1357
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
1358
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
1359
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
1097
1360
  "button",
1098
1361
  "toggle",
1099
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/version-history.json",
1362
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/version-history.json",
1100
1363
  "toggle-group",
1101
1364
  "dialog",
1102
1365
  "textarea",
@@ -1124,6 +1387,11 @@
1124
1387
  "type": "registry:component",
1125
1388
  "target": "components/viewers/interactive-html.tsx"
1126
1389
  },
1390
+ {
1391
+ "path": "registry/viewers/local-file-viewer.tsx",
1392
+ "type": "registry:component",
1393
+ "target": "components/viewers/local-file-viewer.tsx"
1394
+ },
1127
1395
  {
1128
1396
  "path": "registry/viewers/markdown-pane.tsx",
1129
1397
  "type": "registry:component",
@@ -1533,8 +1801,8 @@
1533
1801
  "lucide-react@^1.51.0"
1534
1802
  ],
1535
1803
  "registryDependencies": [
1536
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
1537
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
1804
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
1805
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
1538
1806
  "button",
1539
1807
  "input",
1540
1808
  "label",
@@ -1555,9 +1823,9 @@
1555
1823
  "title": "Feedback",
1556
1824
  "description": "Feedback from the chat composer: one Feedback button starts feedback mode on the application page (hover, click to pin a numbered note, hold ⌥ to use the app, optional voice), and one chip carries the notes to the next message. FeedbackBar, NoteBubble, FeedbackChip with its review, useComposerFeedback for the pi-chat composer, and PickerOverlay styles. Optional, not mounted by default: PointButton, AnnotateSheet, FeedbackList and FeedbackReport. Picking, masking, anchoring and placement stay in @hachej/boring-feedback/page and /ui, so restyling cannot weaken them.",
1557
1825
  "dependencies": [
1558
- "@hachej/boring-feedback@^0.4.2",
1559
- "@hachej/boring-ui-kit@^0.4.2",
1560
- "@hachej/boring-files@^0.4.2",
1826
+ "@hachej/boring-feedback@^0.4.4",
1827
+ "@hachej/boring-ui-kit@^0.4.4",
1828
+ "@hachej/boring-files@^0.4.4",
1561
1829
  "react@^19.0.0",
1562
1830
  "react-dom@^19.0.0",
1563
1831
  "lucide-react@^1.51.0"
@@ -2055,8 +2323,8 @@
2055
2323
  }
2056
2324
  },
2057
2325
  "registryDependencies": [
2058
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
2059
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
2326
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
2327
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
2060
2328
  "button",
2061
2329
  "toggle",
2062
2330
  "badge",
@@ -2071,7 +2339,7 @@
2071
2339
  "title": "Feedback preview",
2072
2340
  "description": "PreviewBanner: a live, reversible preview of a change in the page (Approve / Discard) over `@hachej/boring-feedback/preview`, whose subagent calls models through a host gateway. Separate from `feedback` so annotation-only apps do not install the model SDK; install `feedback` first (its styles cover the banner).",
2073
2341
  "dependencies": [
2074
- "@hachej/boring-feedback@^0.4.2",
2342
+ "@hachej/boring-feedback@^0.4.4",
2075
2343
  "@earendil-works/pi-ai@~1.2.0",
2076
2344
  "react@^19.0.0"
2077
2345
  ],
@@ -2095,8 +2363,8 @@
2095
2363
  "title": "Consumer task-list viewer",
2096
2364
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2097
2365
  "dependencies": [
2098
- "@hachej/boring-ui-kit@^0.4.2",
2099
- "@hachej/boring-files@^0.4.2",
2366
+ "@hachej/boring-ui-kit@^0.4.4",
2367
+ "@hachej/boring-files@^0.4.4",
2100
2368
  "react@^19.0.0",
2101
2369
  "react-dom@^19.0.0",
2102
2370
  "zod@^4.6.5"
@@ -2152,12 +2420,12 @@
2152
2420
  "title": "Version history rows",
2153
2421
  "description": "Shared view-only version rows and menu metadata with relative time, provenance and Current. No file reads, publication or restoration.",
2154
2422
  "dependencies": [
2155
- "@hachej/boring-files@^0.4.2",
2423
+ "@hachej/boring-files@^0.4.4",
2156
2424
  "react@^19.0.0"
2157
2425
  ],
2158
2426
  "registryDependencies": [
2159
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
2160
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
2427
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
2428
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
2161
2429
  "button"
2162
2430
  ],
2163
2431
  "files": [
@@ -2174,20 +2442,21 @@
2174
2442
  "title": "File tree",
2175
2443
  "description": "Browse, search, upload and inspect retained versions through one revisionProvider binding. Uses the consumer's shadcn Button and dropdown-menu with shared version-history rows; Base UI style only.",
2176
2444
  "dependencies": [
2177
- "@hachej/boring-ui-kit@^0.4.2",
2178
- "@hachej/boring-files@^0.4.2",
2445
+ "@hachej/boring-ui-kit@^0.4.4",
2446
+ "@hachej/boring-files@^0.4.4",
2179
2447
  "react@^19.0.0",
2180
2448
  "lucide-react@^1.51.0"
2181
2449
  ],
2182
2450
  "registryDependencies": [
2183
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
2184
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
2185
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/version-history.json",
2451
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
2452
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
2453
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/version-history.json",
2186
2454
  "button",
2187
2455
  "dropdown-menu",
2188
2456
  "collapsible",
2189
2457
  "empty",
2190
2458
  "input",
2459
+ "progress",
2191
2460
  "separator",
2192
2461
  "sidebar"
2193
2462
  ],
@@ -2206,20 +2475,20 @@
2206
2475
  "title": "Documents: the Library, a file and its revisions",
2207
2476
  "description": "The workspace's Library as the list, the chosen file in its viewer and its retained revisions beside it (an older one opens read-only). DocumentSheet opens one document over the app for a host's « Voir la fiche », with an optional « Toutes les fiches ». Every read goes through one revisionProvider binding.",
2208
2477
  "dependencies": [
2209
- "@hachej/boring-ui-kit@^0.4.2",
2210
- "@hachej/boring-files@^0.4.2",
2478
+ "@hachej/boring-ui-kit@^0.4.4",
2479
+ "@hachej/boring-files@^0.4.4",
2211
2480
  "react@^19.0.0",
2212
2481
  "lucide-react@^1.51.0"
2213
2482
  ],
2214
2483
  "registryDependencies": [
2215
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/theme.json",
2216
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/utils.json",
2217
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/button.json",
2218
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-chat.json",
2219
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/pi-app.json",
2220
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/app-shell.json",
2221
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/file-tree.json",
2222
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.2/r/viewers.json",
2484
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/theme.json",
2485
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
2486
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/button.json",
2487
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
2488
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-app.json",
2489
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/app-shell.json",
2490
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/file-tree.json",
2491
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/viewers.json",
2223
2492
  "drawer",
2224
2493
  "button",
2225
2494
  "scroll-area",
@@ -2252,6 +2521,103 @@
2252
2521
  "target": "components/documents/documents-labels.ts"
2253
2522
  }
2254
2523
  ]
2524
+ },
2525
+ {
2526
+ "name": "agent-target",
2527
+ "type": "registry:component",
2528
+ "title": "Point and dictate on app data",
2529
+ "description": "Tap explicitly marked JSON app context, dictate once and show the same app agent’s native reply without opening chat. Host-controlled presentation; no feedback report or second controller.",
2530
+ "dependencies": [
2531
+ "@hachej/boring-ui-kit@^0.4.4",
2532
+ "@hachej/boring-feedback@^0.4.4",
2533
+ "@earendil-works/pi-durable@~1.2.0",
2534
+ "react@^19.0.0",
2535
+ "react-dom@^19.0.0"
2536
+ ],
2537
+ "registryDependencies": [
2538
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/app-shell.json",
2539
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/pi-chat.json",
2540
+ "button",
2541
+ "card",
2542
+ "message",
2543
+ "bubble"
2544
+ ],
2545
+ "files": [
2546
+ {
2547
+ "path": "registry/agent-target/agent-target.tsx",
2548
+ "type": "registry:component",
2549
+ "target": "components/agent-target/agent-target.tsx"
2550
+ },
2551
+ {
2552
+ "path": "registry/agent-target/agent-target-labels.ts",
2553
+ "type": "registry:lib",
2554
+ "target": "components/agent-target/agent-target-labels.ts"
2555
+ }
2556
+ ]
2557
+ },
2558
+ {
2559
+ "name": "requests-board",
2560
+ "type": "registry:block",
2561
+ "title": "Requests board",
2562
+ "description": "Host-fed compact requests and responsive list/detail with questions and decisions.",
2563
+ "registryDependencies": [
2564
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/utils.json",
2565
+ "badge",
2566
+ "button",
2567
+ "input",
2568
+ "toggle-group",
2569
+ "item",
2570
+ "empty",
2571
+ "textarea",
2572
+ "card"
2573
+ ],
2574
+ "files": [
2575
+ {
2576
+ "path": "registry/requests-board/requests-board.tsx",
2577
+ "type": "registry:component",
2578
+ "target": "components/requests-board/requests-board.tsx"
2579
+ },
2580
+ {
2581
+ "path": "registry/requests-board/requests.ts",
2582
+ "type": "registry:lib",
2583
+ "target": "components/requests-board/requests.ts"
2584
+ },
2585
+ {
2586
+ "path": "registry/requests-board/requests-labels.ts",
2587
+ "type": "registry:lib",
2588
+ "target": "components/requests-board/requests-labels.ts"
2589
+ }
2590
+ ],
2591
+ "dependencies": [
2592
+ "react@^19.0.0"
2593
+ ]
2594
+ },
2595
+ {
2596
+ "name": "highlights",
2597
+ "type": "registry:block",
2598
+ "title": "Anchored highlights",
2599
+ "description": "Exact Markdown highlights and comments in a conditional workspace sidecar.",
2600
+ "dependencies": [
2601
+ "@hachej/boring-ui-kit@^0.4.4",
2602
+ "@hachej/boring-files@^0.4.4",
2603
+ "react@^19.0.0",
2604
+ "react-dom@^19.0.0"
2605
+ ],
2606
+ "registryDependencies": [
2607
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.4/r/markdown-editor.json",
2608
+ "button",
2609
+ "textarea",
2610
+ "label",
2611
+ "item",
2612
+ "dropdown-menu"
2613
+ ],
2614
+ "files": [
2615
+ {
2616
+ "path": "registry/highlights/highlights.tsx",
2617
+ "type": "registry:component",
2618
+ "target": "components/highlights/highlights.tsx"
2619
+ }
2620
+ ]
2255
2621
  }
2256
2622
  ]
2257
2623
  }