pi-collapse-transcript 0.3.4 → 0.3.5

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 (298) hide show
  1. package/README.md +15 -15
  2. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/README.md +81 -27
  3. package/node_modules/@luan.sh/pi-libtui/native-revision +1 -0
  4. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/package.json +8 -5
  5. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/color/preview.ts +1 -1
  6. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/native-binary.ts +8 -8
  7. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/panels.ts +2 -2
  8. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/color-preview.test.ts +1 -1
  9. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/editor-chrome.test.ts +2 -2
  10. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/native-binary.test.ts +1 -1
  11. package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/public-surface.test.ts +11 -11
  12. package/package.json +10 -7
  13. package/src/activity-transcript.ts +2 -2
  14. package/src/extension.ts +1 -1
  15. package/test/transcript.test.ts +3 -3
  16. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/LICENSE +0 -0
  17. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/activity-presentation.ts +0 -0
  18. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/appearance.ts +0 -0
  19. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/background-surface.ts +0 -0
  20. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/color/palette.ts +0 -0
  21. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/color/resolver.ts +0 -0
  22. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/color/theme.ts +0 -0
  23. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/component-stack.ts +0 -0
  24. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/content/markdown-code.ts +0 -0
  25. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/content/terminal-text.ts +0 -0
  26. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/content/text.ts +0 -0
  27. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/action-panel.ts +0 -0
  28. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/dialog-button-bar.ts +0 -0
  29. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/multi-select.ts +0 -0
  30. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/picker-panel.ts +0 -0
  31. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/screen-icon-actions.ts +0 -0
  32. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/searchable-select.ts +0 -0
  33. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/select-box.ts +0 -0
  34. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/selectable-list.ts +0 -0
  35. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/selection-action-bar.ts +0 -0
  36. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/semantic-input.ts +0 -0
  37. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/controls/tab.ts +0 -0
  38. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/cursor.ts +0 -0
  39. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/editor-pills.ts +0 -0
  40. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/glyphs.ts +0 -0
  41. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/pointer-interaction.ts +0 -0
  42. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/powerline-pill.ts +0 -0
  43. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/status.ts +0 -0
  44. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/decoration/transient-pill.ts +0 -0
  45. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/index.ts +0 -0
  46. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/model.ts +0 -0
  47. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/parse.ts +0 -0
  48. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/pierre-syntax.ts +0 -0
  49. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/render.ts +0 -0
  50. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/structured.ts +0 -0
  51. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/diff/view.ts +0 -0
  52. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor/chrome.ts +0 -0
  53. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor/composition.ts +0 -0
  54. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor/layout.ts +0 -0
  55. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor/presentation.ts +0 -0
  56. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor/protocol.ts +0 -0
  57. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/editor.ts +0 -0
  58. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/extension.ts +0 -0
  59. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/folding.ts +0 -0
  60. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/cursor-bridge.ts +0 -0
  61. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/editor-bridge.ts +0 -0
  62. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/extension-host.ts +0 -0
  63. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/mouse-bridge.ts +0 -0
  64. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/mouse-dispatch.ts +0 -0
  65. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/mouse-input.ts +0 -0
  66. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/mouse-targets.ts +0 -0
  67. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/pi-layout-adapter.ts +0 -0
  68. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/pi-native-selection.ts +0 -0
  69. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/split-pane-bridge.ts +0 -0
  70. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/host/transcript-bridge.ts +0 -0
  71. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/index.ts +0 -0
  72. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/line-layout.ts +0 -0
  73. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/motion.ts +0 -0
  74. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/mouse/events.ts +0 -0
  75. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/mouse/fullscreen-layout.ts +0 -0
  76. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/mouse/registry.ts +0 -0
  77. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/mouse.ts +0 -0
  78. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/anchored.ts +0 -0
  79. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/detail-card.ts +0 -0
  80. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/dialog.ts +0 -0
  81. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/floating.ts +0 -0
  82. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/framed-editor.ts +0 -0
  83. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/fullscreen.ts +0 -0
  84. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/hover-tooltip.ts +0 -0
  85. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/overlay/modal-mount.ts +0 -0
  86. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/render-cache.ts +0 -0
  87. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/render-epoch.ts +0 -0
  88. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/request-animation.ts +0 -0
  89. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/scrollbar.ts +0 -0
  90. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/selection.ts +0 -0
  91. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/split-pane.ts +0 -0
  92. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/status-presentation.ts +0 -0
  93. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/stream.ts +0 -0
  94. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/syntax.ts +0 -0
  95. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/bridge-client.ts +0 -0
  96. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/embedding.ts +0 -0
  97. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/output.ts +0 -0
  98. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/projection.ts +0 -0
  99. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/pty-host.ts +0 -0
  100. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal/pty-pane.ts +0 -0
  101. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/terminal-colors.ts +0 -0
  102. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/action.ts +0 -0
  103. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/activity.ts +0 -0
  104. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/call-preview.ts +0 -0
  105. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/disclosure-action.ts +0 -0
  106. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/expanded-region-viewport.ts +0 -0
  107. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/index.ts +0 -0
  108. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/output.ts +0 -0
  109. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/transcript.ts +0 -0
  110. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/src/tool/view-region.ts +0 -0
  111. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/appearance.test.ts +0 -0
  112. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/bounded-stream.test.ts +0 -0
  113. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/bridge-client.test.ts +0 -0
  114. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/component-stack.test.ts +0 -0
  115. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/components.test.ts +0 -0
  116. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/content-text.test.ts +0 -0
  117. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/cursor-bridge.test.ts +0 -0
  118. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/cursor.test.ts +0 -0
  119. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/editor-layout.test.ts +0 -0
  120. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/editor-registry.test.ts +0 -0
  121. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/editor-theme.test.ts +0 -0
  122. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/editor-token-pill.test.ts +0 -0
  123. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/floating-overlay.test.ts +0 -0
  124. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/folding.test.ts +0 -0
  125. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/harmonious-theme.test.ts +0 -0
  126. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/interaction.test.ts +0 -0
  127. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/key-icons.test.ts +0 -0
  128. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/markdown-code.test.ts +0 -0
  129. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/modal-overlay-mount.test.ts +0 -0
  130. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/motion.test.ts +0 -0
  131. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/mouse/bridge.test.ts +0 -0
  132. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/mouse/extension.test.ts +0 -0
  133. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/mouse/registry.test.ts +0 -0
  134. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/mouse/screen-decoration.test.ts +0 -0
  135. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/palette.test.ts +0 -0
  136. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/panels.test.ts +0 -0
  137. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/pointer-components.test.ts +0 -0
  138. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/progress.test.ts +0 -0
  139. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/pty-host.test.ts +0 -0
  140. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/pty-pane.test.ts +0 -0
  141. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/render-cache.test.ts +0 -0
  142. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/render-epoch.test.ts +0 -0
  143. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/request-animation.test.ts +0 -0
  144. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/screen-icon-actions.test.ts +0 -0
  145. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/select-box.test.ts +0 -0
  146. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/select-pointer.test.ts +0 -0
  147. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/selectable-list.test.ts +0 -0
  148. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/selection/registry.test.ts +0 -0
  149. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/selection-action-bar.test.ts +0 -0
  150. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/split-pane-bridge.test.ts +0 -0
  151. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/split-pane.test.ts +0 -0
  152. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/status-presentation.test.ts +0 -0
  153. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/syntax.test.ts +0 -0
  154. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/terminal-colors.test.ts +0 -0
  155. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/terminal-embedding.test.ts +0 -0
  156. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/terminal-projection.test.ts +0 -0
  157. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/theme-colors.test.ts +0 -0
  158. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/tool-output.test.ts +0 -0
  159. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/tool-transcript.test.ts +0 -0
  160. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/test/unified-diff.test.ts +0 -0
  161. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/themes/harmonious.json +0 -0
  162. /package/node_modules/{pi-libtui → @luan.sh/pi-libtui}/tsconfig.json +0 -0
  163. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/CONTRIBUTING.md +0 -0
  164. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/LICENSE +0 -0
  165. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/README.md +0 -0
  166. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/dist/diff.js +0 -0
  167. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/dist/diff.min.js +0 -0
  168. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/eslint.config.mjs +0 -0
  169. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.d.ts +0 -0
  170. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.d.ts.map +0 -0
  171. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.js +0 -0
  172. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.d.ts +0 -0
  173. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.d.ts.map +0 -0
  174. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.js +0 -0
  175. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.d.ts +0 -0
  176. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.d.ts.map +0 -0
  177. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.js +0 -0
  178. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.d.ts +0 -0
  179. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.d.ts.map +0 -0
  180. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.js +0 -0
  181. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.d.ts +0 -0
  182. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.d.ts.map +0 -0
  183. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.js +0 -0
  184. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.d.ts +0 -0
  185. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.d.ts.map +0 -0
  186. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.js +0 -0
  187. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.d.ts +0 -0
  188. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.d.ts.map +0 -0
  189. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.js +0 -0
  190. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.d.ts +0 -0
  191. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.d.ts.map +0 -0
  192. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.js +0 -0
  193. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.d.ts +0 -0
  194. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.d.ts.map +0 -0
  195. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.js +0 -0
  196. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.d.ts +0 -0
  197. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.d.ts.map +0 -0
  198. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.js +0 -0
  199. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.d.ts +0 -0
  200. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.d.ts.map +0 -0
  201. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.js +0 -0
  202. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/package.json +0 -0
  203. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.d.ts +0 -0
  204. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.d.ts.map +0 -0
  205. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.js +0 -0
  206. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.d.ts +0 -0
  207. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.d.ts.map +0 -0
  208. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.js +0 -0
  209. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.d.ts +0 -0
  210. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.d.ts.map +0 -0
  211. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.js +0 -0
  212. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.d.ts +0 -0
  213. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.d.ts.map +0 -0
  214. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.js +0 -0
  215. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.d.ts +0 -0
  216. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.d.ts.map +0 -0
  217. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.js +0 -0
  218. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.d.ts +0 -0
  219. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.d.ts.map +0 -0
  220. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.js +0 -0
  221. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.d.ts +0 -0
  222. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.d.ts.map +0 -0
  223. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.js +0 -0
  224. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.d.ts +0 -0
  225. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.d.ts.map +0 -0
  226. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.js +0 -0
  227. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.d.ts +0 -0
  228. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.d.ts.map +0 -0
  229. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.js +0 -0
  230. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.d.ts +0 -0
  231. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.d.ts.map +0 -0
  232. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.js +0 -0
  233. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.d.ts +0 -0
  234. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.d.ts.map +0 -0
  235. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.js +0 -0
  236. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.d.ts +0 -0
  237. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.d.ts.map +0 -0
  238. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.js +0 -0
  239. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.d.ts +0 -0
  240. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.d.ts.map +0 -0
  241. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.js +0 -0
  242. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.d.ts +0 -0
  243. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.d.ts.map +0 -0
  244. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.js +0 -0
  245. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.d.ts +0 -0
  246. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.d.ts.map +0 -0
  247. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.js +0 -0
  248. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.d.ts +0 -0
  249. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.d.ts.map +0 -0
  250. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.js +0 -0
  251. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.d.ts +0 -0
  252. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.d.ts.map +0 -0
  253. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.js +0 -0
  254. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.d.ts +0 -0
  255. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.d.ts.map +0 -0
  256. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.js +0 -0
  257. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.d.ts +0 -0
  258. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.d.ts.map +0 -0
  259. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.js +0 -0
  260. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.d.ts +0 -0
  261. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.d.ts.map +0 -0
  262. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.js +0 -0
  263. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.d.ts +0 -0
  264. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.d.ts.map +0 -0
  265. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.js +0 -0
  266. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/package.json +0 -0
  267. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.d.ts +0 -0
  268. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.d.ts.map +0 -0
  269. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.js +0 -0
  270. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.d.ts +0 -0
  271. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.d.ts.map +0 -0
  272. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.js +0 -0
  273. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.d.ts +0 -0
  274. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.d.ts.map +0 -0
  275. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.js +0 -0
  276. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.d.ts +0 -0
  277. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.d.ts.map +0 -0
  278. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.js +0 -0
  279. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.d.ts +0 -0
  280. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.d.ts.map +0 -0
  281. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.js +0 -0
  282. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.d.ts +0 -0
  283. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.d.ts.map +0 -0
  284. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.js +0 -0
  285. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.d.ts +0 -0
  286. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.d.ts.map +0 -0
  287. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.js +0 -0
  288. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.d.ts +0 -0
  289. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.d.ts.map +0 -0
  290. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.js +0 -0
  291. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.d.ts +0 -0
  292. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.d.ts.map +0 -0
  293. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.js +0 -0
  294. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.d.ts +0 -0
  295. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.d.ts.map +0 -0
  296. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.js +0 -0
  297. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/package.json +0 -0
  298. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/release-notes.md +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # pi-collapse-transcript
1
+ # @luan.sh/pi-collapse-transcript&nbsp;[<img src="https://pi.luan.sh/icons/pi.svg" width="14" alt="Pi gallery">](https://pi.dev/packages/@luan.sh/pi-collapse-transcript)&nbsp;[<img src="https://pi.luan.sh/icons/npm.svg" width="14" alt="npm">](https://www.npmjs.com/package/@luan.sh/pi-collapse-transcript)
2
2
 
3
- `pi-collapse-transcript` folds runs of tool calls and thinking blocks in Pi's fullscreen
3
+ `@luan.sh/pi-collapse-transcript` folds runs of tool calls and thinking blocks in Pi's fullscreen
4
4
  transcript into one collapsed activity row. The row shows the latest tool action
5
5
  or the latest provider-supplied thinking heading, a step count, and a failure
6
6
  count. Click it to expand the run back into the original tool renderers and
@@ -13,14 +13,14 @@ model-visible content are never rewritten.
13
13
 
14
14
  ## Preview
15
15
 
16
- ![pi-collapse-transcript in Bootty](https://github.com/luan/agents/releases/download/v0.3.4/pi-collapse-transcript.png)
16
+ ![@luan.sh/pi-collapse-transcript in Bootty](https://pi.luan.sh/media/previews/pi-collapse-transcript-d3924989e5a1.png)
17
17
 
18
- [Watch the demo](https://github.com/luan/agents/releases/download/v0.3.4/pi-collapse-transcript.mp4).
18
+ [Watch the demo](https://pi.luan.sh/media/previews/pi-collapse-transcript-f4ea1478db8c.mp4).
19
19
 
20
20
  ## Install
21
21
 
22
22
  ```sh
23
- pi install npm:pi-collapse-transcript
23
+ pi install npm:@luan.sh/pi-collapse-transcript
24
24
  ```
25
25
 
26
26
  That is the only step. The package ships its rendering library and mouse host
@@ -28,7 +28,7 @@ with it and registers both through `package.json`; nothing else needs to be
28
28
  installed. It runs inside Pi (`@earendil-works/pi-coding-agent` with
29
29
  `@earendil-works/pi-tui`); 0.84.2 is the tested version.
30
30
 
31
- Optional companion: `pi install npm:pi-xsettings` adds the
31
+ Optional companion: `pi install npm:@luan.sh/pi-xsettings` adds the
32
32
  `/xsettings` UI for the shared appearance settings (activity indicator, text
33
33
  effects, animation speed) that the collapsed row uses; without it the compiled
34
34
  defaults apply.
@@ -73,26 +73,26 @@ transcript controls need the fullscreen surface.
73
73
 
74
74
  The package registers no settings, no actions, and no keybindings. The only
75
75
  input it handles is a mouse press on the activity row, provided by
76
- the bundled `pi-libtui` mouse host. There is nothing to add to
76
+ the bundled `@luan.sh/pi-libtui` mouse host. There is nothing to add to
77
77
  `~/.pi/agent/keybindings.json` for this package. The running indicator and
78
- text effects follow `pi-libtui`'s shared appearance settings (`activityIndicator`,
78
+ text effects follow `@luan.sh/pi-libtui`'s shared appearance settings (`activityIndicator`,
79
79
  default `spinner`; `textEffect`, default `off`; `animationSpeed`, default
80
- `normal`; and the other keys documented in the `pi-libtui` README).
81
- These are edited via `/xsettings` when `pi-xsettings` is installed;
80
+ `normal`; and the other keys documented in the `@luan.sh/pi-libtui` README).
81
+ These are edited via `/xsettings` when `@luan.sh/pi-xsettings` is installed;
82
82
  otherwise the defaults apply.
83
83
 
84
84
  ## Library API
85
85
 
86
- `import { ActivityTranscript } from "pi-collapse-transcript"` gives a
86
+ `import { ActivityTranscript } from "@luan.sh/pi-collapse-transcript"` gives a
87
87
  `ComponentStack` that takes an entry reader, a Pi `Theme`, and a
88
88
  `requestRender` callback. It groups `TranscriptEntry` values from
89
- `pi-libtui/tool` and owns the fold state of each section. Pass it to
89
+ `@luan.sh/pi-libtui/tool` and owns the fold state of each section. Pass it to
90
90
  `mountTranscriptProjection` to use it outside this extension, or render it
91
91
  directly in tests. It has no native binary.
92
92
 
93
93
  ## Native boundary
94
94
 
95
- `pi-libtui/tool` supplies the versioned transcript bridge. It reads Pi 0.84–0.85
95
+ `@luan.sh/pi-libtui/tool` supplies the versioned transcript bridge. It reads Pi 0.84–0.85
96
96
  private transcript fields, guards each node's shape, and fails open: when the
97
97
  document layout does not match, when a node is not a recognised assistant or
98
98
  tool component, or when a projection is already installed, the transcript is
@@ -106,8 +106,8 @@ left untouched. Unknown nodes and native error notices render as they are.
106
106
  | Grouping entries into sections and fold state | `src/activity-transcript.ts` (`ActivityTranscript`, `ActivitySection`) |
107
107
  | Header text for a run | `activitySummary` in `src/activity-transcript.ts` |
108
108
  | Public exports | `src/index.ts` |
109
- | Native transcript bridge | `mountTranscriptProjection` in `pi-libtui/tool` |
110
- | Row rendering, motion, folding, mouse | `ToolActivity`, `ComponentStack`, and the mouse host in `pi-libtui` |
109
+ | Native transcript bridge | `mountTranscriptProjection` in `@luan.sh/pi-libtui/tool` |
110
+ | Row rendering, motion, folding, mouse | `ToolActivity`, `ComponentStack`, and the mouse host in `@luan.sh/pi-libtui` |
111
111
  | Tool execution | None; existing tools run unchanged |
112
112
 
113
113
  ## Develop
@@ -1,11 +1,11 @@
1
- # pi-libtui
1
+ # @luan.sh/pi-libtui&nbsp;[<img src="https://pi.luan.sh/icons/pi.svg" width="14" alt="Pi gallery">](https://pi.dev/packages/@luan.sh/pi-libtui)&nbsp;[<img src="https://pi.luan.sh/icons/npm.svg" width="14" alt="npm">](https://www.npmjs.com/package/@luan.sh/pi-libtui)
2
2
 
3
3
  Shared terminal UI for Pi extensions: layouts, split panes, dialogs, pickers,
4
4
  selection actions, semantic colors, icons, cursors, syntax highlighting,
5
5
  animated tool surfaces, streamed output, diffs, terminal projection, and the
6
6
  protocols those pieces need. The primary audience is extension authors.
7
7
 
8
- The package has two surfaces. `import "pi-libtui"` is a
8
+ The package has two surfaces. `import "@luan.sh/pi-libtui"` is a
9
9
  side-effect-free library: it does not start Pi, probe the terminal, register a
10
10
  tool, or install UI. `src/extension.ts` is a Pi extension (listed in the
11
11
  package's `pi.extensions`) that installs the generic mouse, cursor, and
@@ -18,24 +18,24 @@ registers no model-facing tools, keybindings, or feature-specific UI.
18
18
 
19
19
  The native palette diagnostic and shared picker components in Xsettings.
20
20
 
21
- ![pi-libtui in Bootty](https://github.com/luan/agents/releases/download/v0.3.2/pi-libtui.png)
21
+ ![@luan.sh/pi-libtui in Bootty](https://pi.luan.sh/media/previews/pi-libtui-1820a03ca387.png)
22
22
 
23
- [Watch the demo](https://github.com/luan/agents/releases/download/v0.3.2/pi-libtui.mp4).
23
+ [Watch the demo](https://pi.luan.sh/media/previews/pi-libtui-e7ff85f140d3.mp4).
24
24
 
25
25
  ## Install
26
26
 
27
27
  ```sh
28
- pi install npm:pi-libtui
28
+ pi install npm:@luan.sh/pi-libtui
29
29
  ```
30
30
 
31
31
  This loads the host extension and the `harmonious` theme on its own. Feature
32
- packages normally bundle their own copy instead: add `pi-libtui` to
32
+ packages normally bundle their own copy instead: add `@luan.sh/pi-libtui` to
33
33
  both `dependencies` and `bundledDependencies` in `package.json`, and list
34
34
  `"./node_modules/pi-libtui/src/extension.ts"` in the package's
35
35
  `pi.extensions` so the mouse/cursor bridge is active. The host claims itself
36
36
  once per process, so several installed copies do not conflict.
37
37
 
38
- Optional companion: `pi install npm:pi-xsettings` adds the `/xsettings`
38
+ Optional companion: `pi install npm:@luan.sh/pi-xsettings` adds the `/xsettings`
39
39
  UI that publishes the appearance settings below; without it the compiled
40
40
  defaults apply.
41
41
 
@@ -47,6 +47,59 @@ neither a generated 256-color palette nor an ANSI base-16 palette, the host
47
47
  switches to Pi's built-in theme for the detected light or dark scheme (dark if
48
48
  the measurement fails).
49
49
 
50
+ ## Components
51
+
52
+ Captures of the shared components inside the extensions that use them. The
53
+ images are served from the documentation site.
54
+
55
+ `ActionPanel` with a `DialogButtonBar` footer in a `DialogOverlay`: the
56
+ pi-copy-mode reaction picker.
57
+
58
+ ![ActionPanel and DialogButtonBar in pi-copy-mode](https://pi.luan.sh/media/libtui/action-panel.png)
59
+
60
+ `MultiSelect` with ordered checkboxes, a filter `SemanticInput`, and a
61
+ `DialogButtonBar`: the pi-xsettings segment editor.
62
+
63
+ ![MultiSelect in pi-xsettings](https://pi.luan.sh/media/libtui/multi-select.png)
64
+
65
+ `mountSplitPane` with side-panel tabs from `registerSidePanelProvider`:
66
+ pi-panels hosting a pi-side conversation.
67
+
68
+ ![Split pane and side-panel tabs in pi-panels](https://pi.luan.sh/media/libtui/split-panes.png)
69
+
70
+ `UnifiedDiffView` from `pi-libtui/diff`: the pi-fileops `apply_patch` result.
71
+
72
+ ![UnifiedDiffView in pi-fileops](https://pi.luan.sh/media/libtui/unified-diff.png)
73
+
74
+ `PtyPane` over `TerminalProjection` from `pi-libtui/terminal`: the
75
+ pi-exec-command Process Hub attached to a running server.
76
+
77
+ ![PtyPane in pi-exec-command](https://pi.luan.sh/media/libtui/terminal.png)
78
+
79
+ `renderDetailCard` as an anchored overlay: a pi-copy-mode annotation.
80
+
81
+ ![Detail card in pi-copy-mode](https://pi.luan.sh/media/libtui/detail-card.png)
82
+
83
+ `ToolActivity` and `ToolTranscript` from `pi-libtui/tool`: pi-tool-search
84
+ and pi-exec-command rows collapsed into an `Explored` group.
85
+
86
+ ![ToolActivity rows in pi-tool-search](https://pi.luan.sh/media/libtui/tool-activity.png)
87
+
88
+ `ProgressBar`, `renderPill`, and `renderEditorTokenPills`: the
89
+ pi-custom-editor status row and file tokens.
90
+
91
+ ![Status row and editor pills in pi-custom-editor](https://pi.luan.sh/media/libtui/status-row.png)
92
+
93
+ `TransientPill`: the pi-tuicr confirmation after a review comment is added.
94
+
95
+ ![TransientPill in pi-tuicr](https://pi.luan.sh/media/libtui/transient-pill.png)
96
+
97
+ Components without a capture in a shipped extension: `PickerPanel`
98
+ (pi-prompt-storage), `SearchableSelect` and `SelectBox` (pi-xsettings
99
+ editors), `SelectionActionBar` (pi-copy-mode), `FramedEditorOverlay`,
100
+ `mountHoverTooltip`, `FloatingOverlay`, `ActivityIndicator` styles, and
101
+ `applyScrollbar`. Add them here when a gallery recording shows them in use.
102
+
50
103
  ## Public modules
51
104
 
52
105
  Every entry point is a side-effect-free import. "Host required" means the
@@ -54,15 +107,15 @@ Pi-native behaviour also needs the extension loaded.
54
107
 
55
108
  | Import path | Principal exports / capability | Host required |
56
109
  | --- | --- | --- |
57
- | `pi-libtui` | Layouts, split panes, side-panel protocol, dialogs, pickers, inputs, selection actions, semantic colors, icons, cursors, `PtyProcess`, `PtyPane`, `applyScrollbar`, `PointerInteractionController`, `RenderedLinesCache`, `SyntaxText`, motion/progress, appearance (`getTuiAppearance`, `configureTuiAppearance`, `subscribeTuiAppearance`), `ensureNativeBinary` | Rendering no; panes, PTYs, and bridges yes |
58
- | `pi-libtui/diff` | `createUnifiedDiffModel`, `parseUnifiedDiff`, `renderUnifiedDiff`, `UnifiedDiffView`, bounded diff models/viewports | No |
59
- | `pi-libtui/editor` | `ensureEditorRegistry`, `dispatchEditorPaste`, `dispatchEditorRender`, `SemanticEditor`, `semanticEditorTheme`, editor registry contracts | Only to connect the registry to Pi's editor |
60
- | `pi-libtui/folding` | `ensureFoldingRegistry`, `foldTargetAt`, `clearFoldingCurrent`, fold-target contracts | Only for copy-mode keyboard integration |
61
- | `pi-libtui/mouse` | `ensureMouseRegistry`, `registerModalPointerShield`, viewport handlers, pointer contracts, `getFullscreenLayoutCapability`, `publishFullscreenLayoutCapability`, `resolveFullscreenLayout` | Yes for terminal pointer events and layout geometry |
62
- | `pi-libtui/selection` | `ensureSelectionRegistry`, native selection geometry, completion events, action contracts | Yes for Pi-native selection events |
63
- | `pi-libtui/stream` | `BoundedStreamBuffer`, bounded UTF-8/ANSI-safe stream snapshots | No |
64
- | `pi-libtui/terminal` | `TerminalProjection`, incremental `TerminalOutput` for bounded PTY/ANSI projection | No |
65
- | `pi-libtui/tool` | `ToolAction`, `LiveToolAction`, `ToolDisclosureAction`, `ToolActivity`, `ToolOutput`, `ToolTranscript`, `ToolViewRegion`, tool-call preview helpers | No for rendering |
110
+ | `@luan.sh/pi-libtui` | Layouts, split panes, side-panel protocol, dialogs, pickers, inputs, selection actions, semantic colors, icons, cursors, `PtyProcess`, `PtyPane`, `applyScrollbar`, `PointerInteractionController`, `RenderedLinesCache`, `SyntaxText`, motion/progress, appearance (`getTuiAppearance`, `configureTuiAppearance`, `subscribeTuiAppearance`), `ensureNativeBinary` | Rendering no; panes, PTYs, and bridges yes |
111
+ | `@luan.sh/pi-libtui/diff` | `createUnifiedDiffModel`, `parseUnifiedDiff`, `renderUnifiedDiff`, `UnifiedDiffView`, bounded diff models/viewports | No |
112
+ | `@luan.sh/pi-libtui/editor` | `ensureEditorRegistry`, `dispatchEditorPaste`, `dispatchEditorRender`, `SemanticEditor`, `semanticEditorTheme`, editor registry contracts | Only to connect the registry to Pi's editor |
113
+ | `@luan.sh/pi-libtui/folding` | `ensureFoldingRegistry`, `foldTargetAt`, `clearFoldingCurrent`, fold-target contracts | Only for copy-mode keyboard integration |
114
+ | `@luan.sh/pi-libtui/mouse` | `ensureMouseRegistry`, `registerModalPointerShield`, viewport handlers, pointer contracts, `getFullscreenLayoutCapability`, `publishFullscreenLayoutCapability`, `resolveFullscreenLayout` | Yes for terminal pointer events and layout geometry |
115
+ | `@luan.sh/pi-libtui/selection` | `ensureSelectionRegistry`, native selection geometry, completion events, action contracts | Yes for Pi-native selection events |
116
+ | `@luan.sh/pi-libtui/stream` | `BoundedStreamBuffer`, bounded UTF-8/ANSI-safe stream snapshots | No |
117
+ | `@luan.sh/pi-libtui/terminal` | `TerminalProjection`, incremental `TerminalOutput` for bounded PTY/ANSI projection | No |
118
+ | `@luan.sh/pi-libtui/tool` | `ToolAction`, `LiveToolAction`, `ToolDisclosureAction`, `ToolActivity`, `ToolOutput`, `ToolTranscript`, `ToolViewRegion`, tool-call preview helpers | No for rendering |
66
119
 
67
120
  The `ensure*Registry` functions create or reuse a process-global capability
68
121
  keyed by `Symbol.for`, so feature packages and the host share one instance.
@@ -74,16 +127,16 @@ guarded Pi 0.84–0.85 adapter; unsupported hosts keep their native transcript.
74
127
 
75
128
  ## Native binaries
76
129
 
77
- Feature packages shell out to Rust binaries such as `terminal_bridge` (the
130
+ Feature packages shell out to Rust binaries such as `terminal-bridge` (the
78
131
  exported `TERMINAL_BRIDGE` descriptor). Requires a Rust toolchain
79
- (https://rustup.rs). The `terminal_bridge` binary builds itself on first use
80
- under Pi's agent directory (`native/terminal-bridge/v<version>/`), where
81
- `<version>` is this package's version. Set `PI_TERMINAL_BRIDGE_BINARY` to use
132
+ (https://rustup.rs). The `terminal-bridge` binary builds itself on first use
133
+ under Pi's agent directory (`native/terminal-bridge/<revision>/`), where
134
+ `<revision>` is the source commit recorded in the packaged `native-revision` file. Set `PI_TERMINAL_BRIDGE_BINARY` to use
82
135
  a prebuilt binary; it must point at an executable file.
83
136
 
84
137
  `ensureNativeBinary(binary, hooks?)` resolves in this order: the descriptor's
85
- env override, then `<agentDir>/native/<crate>/v<version>/bin/<name>`, building
86
- it on first use when absent. Builds are keyed by crate and version, so every
138
+ env override, then `<agentDir>/native/<crate>/<revision>/bin/<name>`, building
139
+ it on first use when absent. Builds are keyed by crate and source commit, so every
87
140
  installed copy shares them, and concurrent requests within one process share
88
141
  one build. Pass `onBuild` to show the delay in the UI. The extension host keeps
89
142
  the shared PTY host alive across an extension reload; a session switch or quit
@@ -125,8 +178,8 @@ shape is absent.
125
178
 
126
179
  This package has no settings store of its own. It exposes an appearance
127
180
  registry with compiled defaults (`DEFAULT_TUI_APPEARANCE`) that a settings host
128
- such as `pi-xsettings` overrides through `configureTuiAppearance()`;
129
- with pi-xsettings installed they are edited live via `/xsettings`. Keys and
181
+ such as `@luan.sh/pi-xsettings` overrides through `configureTuiAppearance()`;
182
+ with @luan.sh/pi-xsettings installed they are edited live via `/xsettings`. Keys and
130
183
  defaults:
131
184
 
132
185
  | Key | Default | Values |
@@ -188,7 +241,7 @@ through `src/color/resolver.ts`. Feature code uses only the root color API:
188
241
  ## Troubleshooting
189
242
 
190
243
  - A feature renders but clicks do nothing: the host extension is not loaded.
191
- Install `pi-libtui` as a Pi package or list its `src/extension.ts`
244
+ Install `@luan.sh/pi-libtui` as a Pi package or list its `src/extension.ts`
192
245
  in the feature package's `pi.extensions`.
193
246
  - Nerd Font or Powerline glyphs are missing: set the icon pack to `unicode` and
194
247
  disable Powerline in `/xsettings`. Those are also the compiled defaults.
@@ -201,5 +254,6 @@ Source: https://github.com/luan/agents, directory
201
254
  harnesses/pi/agent/packages/pi-libtui. Run `bun run typecheck` and
202
255
  `bun test test` in that directory. When running from that checkout,
203
256
  `ensureNativeBinary` also looks for `target/{release,debug}/<name>` in the Cargo
204
- workspace and reports an unbuilt checkout instead of building; builds are pinned
205
- to the `v<version>` git tag, so publishing requires a matching tag.
257
+ workspace and reports an unbuilt checkout instead of building. `just pi-pack`
258
+ records the checkout commit in every bundled `@luan.sh/pi-libtui/native-revision` file,
259
+ so native builds do not depend on npm versions or repository-wide release tags.
@@ -0,0 +1 @@
1
+ eace67b49e52950cb408c08f290f1ca9c409d68a
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "pi-libtui",
3
- "version": "0.3.2",
2
+ "name": "@luan.sh/pi-libtui",
3
+ "version": "0.3.9",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,8 +30,8 @@
30
30
  "themes": [
31
31
  "./themes"
32
32
  ],
33
- "image": "https://github.com/luan/agents/releases/download/v0.3.2/pi-libtui.png",
34
- "video": "https://github.com/luan/agents/releases/download/v0.3.2/pi-libtui.mp4"
33
+ "image": "https://pi.luan.sh/media/previews/pi-libtui-1820a03ca387.png",
34
+ "video": "https://pi.luan.sh/media/previews/pi-libtui-e7ff85f140d3.mp4"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "*",
@@ -51,5 +51,8 @@
51
51
  "typecheck": "tsc --build",
52
52
  "test": "bun test --only-failures --timeout 15000 test"
53
53
  },
54
- "bundledDependencies": []
54
+ "bundledDependencies": [],
55
+ "publishAliases": [
56
+ "pi-libtui"
57
+ ]
55
58
  }
@@ -13,7 +13,7 @@ const HUE_EDGES: readonly ChannelMask[] = [
13
13
  [true, false, true],
14
14
  ];
15
15
 
16
- /** Width of the upstream color256 terminal preview, including its base16 legend. */
16
+ /** Width of the color256 terminal preview, including its base16 legend. */
17
17
  export const COLOR256_PREVIEW_WIDTH = 69;
18
18
 
19
19
  /**
@@ -35,7 +35,7 @@ export type NativeBinaryLocation =
35
35
 
36
36
  export const TERMINAL_BRIDGE: NativeBinary = {
37
37
  crate: "terminal-bridge",
38
- binaryName: "terminal_bridge",
38
+ binaryName: "terminal-bridge",
39
39
  env: "PI_TERMINAL_BRIDGE_BINARY",
40
40
  };
41
41
 
@@ -81,7 +81,8 @@ export interface EnsureNativeBinaryHooks {
81
81
  * revision under Pi's agent directory and shared by every installed pi-libtui copy.
82
82
  */
83
83
  export async function ensureNativeBinary(binary: NativeBinary, hooks: EnsureNativeBinaryHooks = {}): Promise<string> {
84
- const location = locateNativeBinary(binary, processOptions());
84
+ const options = processOptions();
85
+ const location = locateNativeBinary(binary, options);
85
86
  if (location.kind === "found") return location.path;
86
87
  if (location.kind === "unbuilt-checkout") {
87
88
  throw new Error(
@@ -92,7 +93,7 @@ export async function ensureNativeBinary(binary: NativeBinary, hooks: EnsureNati
92
93
  const existing = builds.get(location.path);
93
94
  if (existing) return existing;
94
95
  hooks.onBuild?.(`Building ${binary.binaryName} (first use); this takes a minute.`);
95
- const build = runCargo(nativeBuildArguments(binary, nativeRevision(), location.installRoot), location.installRoot)
96
+ const build = runCargo(nativeBuildArguments(binary, options.rev, location.installRoot), location.installRoot)
96
97
  .then(() => {
97
98
  if (!isExecutable(location.path)) throw new Error(`cargo install did not produce ${location.path}`);
98
99
  return location.path;
@@ -106,12 +107,11 @@ export function terminalBridgeBinaryPath(): Promise<string> {
106
107
  return ensureNativeBinary(TERMINAL_BRIDGE);
107
108
  }
108
109
 
109
- /** Builds are pinned to the git tag matching this package's version. Tag the repository when publishing. */
110
+ /** The pack step records the exact source commit independently of npm versions. */
110
111
  export function nativeRevision(): string {
111
- const manifest = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")) as {
112
- version: string;
113
- };
114
- return `v${manifest.version}`;
112
+ const revision = readFileSync(new URL("../native-revision", import.meta.url), "utf8").trim();
113
+ if (!/^[a-f0-9]{40}$/.test(revision)) throw new Error("Invalid native source revision; reinstall the package.");
114
+ return revision;
115
115
  }
116
116
 
117
117
  function processOptions(): NativeBinaryOptions {
@@ -1,7 +1,7 @@
1
1
  import type { Theme } from "@earendil-works/pi-coding-agent";
2
2
  import type { Component, Focusable } from "@earendil-works/pi-tui";
3
- import type { SplitPaneHost, TuiIconName } from "pi-libtui";
4
- import type { TuiMouseEvent } from "pi-libtui/mouse";
3
+ import type { SplitPaneHost, TuiIconName } from "@luan.sh/pi-libtui";
4
+ import type { TuiMouseEvent } from "@luan.sh/pi-libtui/mouse";
5
5
 
6
6
  export const SIDE_PANEL_REGISTRY_KEY = Symbol.for("pi-panels/registry/v1");
7
7
  export const SIDE_PANEL_PROTOCOL = "pi-panels/registry/v1" as const;
@@ -3,7 +3,7 @@ import { visibleWidth } from "@earendil-works/pi-tui";
3
3
  import { COLOR256_PREVIEW_WIDTH, renderColor256Preview } from "../src/color/preview.ts";
4
4
 
5
5
  describe("color256 preview", () => {
6
- test("matches the upstream terminal grid dimensions and labels", () => {
6
+ test("matches the terminal grid dimensions and labels", () => {
7
7
  const lines = renderColor256Preview("harmonious");
8
8
  expect(lines).toHaveLength(20);
9
9
  expect(lines.every((line) => visibleWidth(line) === COLOR256_PREVIEW_WIDTH)).toBe(true);
@@ -1,13 +1,13 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import type { Theme } from "@earendil-works/pi-coding-agent";
3
3
  import { stripTerminalSequences, visibleWidth } from "@earendil-works/pi-tui";
4
- import { tuiTheme } from "pi-libtui";
4
+ import { tuiTheme } from "@luan.sh/pi-libtui";
5
5
  import {
6
6
  type EditorCompositionStyle,
7
7
  renderEditorComposition,
8
8
  renderEditorCompositionPreview,
9
9
  renderEditorCompositionStatus,
10
- } from "pi-libtui/editor";
10
+ } from "@luan.sh/pi-libtui/editor";
11
11
 
12
12
  const theme = {
13
13
  name: "editor-chrome-test",
@@ -10,7 +10,7 @@ const options = (executables: readonly string[], environment: Record<string, str
10
10
  rev: "v1.2.3",
11
11
  isExecutable: (path: string) => executables.includes(path),
12
12
  });
13
- const managed = join("/agent/native", "terminal-bridge", "v1.2.3", "bin", "terminal_bridge");
13
+ const managed = join("/agent/native", "terminal-bridge", "v1.2.3", "bin", "terminal-bridge");
14
14
 
15
15
  test("env override wins and must be executable", () => {
16
16
  expect(locateNativeBinary(TERMINAL_BRIDGE, options(["/x/bridge"], { [ENV]: "/x/bridge" }))).toEqual({
@@ -1,15 +1,15 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
 
3
3
  const PUBLIC_ENTRYPOINTS = [
4
- "pi-libtui",
5
- "pi-libtui/diff",
6
- "pi-libtui/editor",
7
- "pi-libtui/folding",
8
- "pi-libtui/mouse",
9
- "pi-libtui/selection",
10
- "pi-libtui/stream",
11
- "pi-libtui/terminal",
12
- "pi-libtui/tool",
4
+ "@luan.sh/pi-libtui",
5
+ "@luan.sh/pi-libtui/diff",
6
+ "@luan.sh/pi-libtui/editor",
7
+ "@luan.sh/pi-libtui/folding",
8
+ "@luan.sh/pi-libtui/mouse",
9
+ "@luan.sh/pi-libtui/selection",
10
+ "@luan.sh/pi-libtui/stream",
11
+ "@luan.sh/pi-libtui/terminal",
12
+ "@luan.sh/pi-libtui/tool",
13
13
  ] as const;
14
14
 
15
15
  const CAPABILITY_KEYS = [
@@ -30,7 +30,7 @@ describe("public module boundaries", () => {
30
30
  }
31
31
  const after = CAPABILITY_KEYS.map((key) => Object.hasOwn(globalThis, key));
32
32
  expect(after).toEqual(before);
33
- const mouse = await import("pi-libtui/mouse");
33
+ const mouse = await import("@luan.sh/pi-libtui/mouse");
34
34
  expect(Object.keys(mouse).sort()).toEqual([
35
35
  "FULLSCREEN_LAYOUT_CAPABILITY_KEY",
36
36
  "FULLSCREEN_LAYOUT_PROTOCOL",
@@ -44,7 +44,7 @@ describe("public module boundaries", () => {
44
44
  "registerModalPointerShield",
45
45
  "resolveFullscreenLayout",
46
46
  ]);
47
- const editor = await import("pi-libtui/editor");
47
+ const editor = await import("@luan.sh/pi-libtui/editor");
48
48
  expect(Object.keys(editor).sort()).toEqual([
49
49
  "EDITOR_PROTOCOL",
50
50
  "EDITOR_REGISTRY_KEY",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-collapse-transcript",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,16 +18,16 @@
18
18
  "pi": {
19
19
  "extensions": [
20
20
  "./src/extension.ts",
21
- "./node_modules/pi-libtui/src/extension.ts"
21
+ "./node_modules/@luan.sh/pi-libtui/src/extension.ts"
22
22
  ],
23
- "image": "https://github.com/luan/agents/releases/download/v0.3.4/pi-collapse-transcript.png",
24
- "video": "https://github.com/luan/agents/releases/download/v0.3.4/pi-collapse-transcript.mp4"
23
+ "image": "https://pi.luan.sh/media/previews/pi-collapse-transcript-d3924989e5a1.png",
24
+ "video": "https://pi.luan.sh/media/previews/pi-collapse-transcript-f4ea1478db8c.mp4"
25
25
  },
26
26
  "dependencies": {
27
- "pi-libtui": "file:../pi-libtui"
27
+ "@luan.sh/pi-libtui": "file:../pi-libtui"
28
28
  },
29
29
  "bundledDependencies": [
30
- "pi-libtui"
30
+ "@luan.sh/pi-libtui"
31
31
  ],
32
32
  "peerDependencies": {
33
33
  "@earendil-works/pi-coding-agent": "*",
@@ -42,5 +42,8 @@
42
42
  "scripts": {
43
43
  "typecheck": "tsc --build",
44
44
  "test": "bun test --only-failures test"
45
- }
45
+ },
46
+ "publishAliases": [
47
+ "pi-collapse-transcript"
48
+ ]
46
49
  }
@@ -1,7 +1,7 @@
1
1
  import type { Theme } from "@earendil-works/pi-coding-agent";
2
2
  import { type Component, Spacer } from "@earendil-works/pi-tui";
3
- import { ComponentStack, sanitizeTuiFieldPreview } from "pi-libtui";
4
- import { ToolActivity, type TranscriptEntry } from "pi-libtui/tool";
3
+ import { ComponentStack, sanitizeTuiFieldPreview } from "@luan.sh/pi-libtui";
4
+ import { ToolActivity, type TranscriptEntry } from "@luan.sh/pi-libtui/tool";
5
5
 
6
6
  type ActivityEntry = Exclude<TranscriptEntry, { kind: "content" }>;
7
7
 
package/src/extension.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
- import { mountTranscriptProjection } from "pi-libtui/tool";
2
+ import { mountTranscriptProjection } from "@luan.sh/pi-libtui/tool";
3
3
  import { ActivityTranscript } from "./activity-transcript.ts";
4
4
 
5
5
  export default function transcriptExtension(pi: ExtensionAPI): void {
@@ -1,9 +1,9 @@
1
1
  import { afterEach, expect, test } from "bun:test";
2
2
  import { AssistantMessageComponent, initTheme, ToolExecutionComponent } from "@earendil-works/pi-coding-agent";
3
3
  import { Container, ProcessTerminal, Text, TuiAltScreen, visibleWidth } from "@earendil-works/pi-tui";
4
- import { configureTuiAppearance, DEFAULT_TUI_APPEARANCE, sharedMotionScheduler } from "pi-libtui";
5
- import { mountTranscriptProjection, type TranscriptEntry } from "pi-libtui/tool";
6
- import type { TuiMouseEvent } from "pi-libtui/mouse";
4
+ import { configureTuiAppearance, DEFAULT_TUI_APPEARANCE, sharedMotionScheduler } from "@luan.sh/pi-libtui";
5
+ import { mountTranscriptProjection, type TranscriptEntry } from "@luan.sh/pi-libtui/tool";
6
+ import type { TuiMouseEvent } from "@luan.sh/pi-libtui/mouse";
7
7
  import { theme } from "../node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js";
8
8
  import { ActivityTranscript, activitySummary } from "../src/activity-transcript.ts";
9
9