@dungle-scrubs/tallow 0.9.3 → 0.9.6

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 (207) hide show
  1. package/dist/cli.js +7 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config.d.ts +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/interactive-mode-patch.d.ts +24 -10
  6. package/dist/interactive-mode-patch.d.ts.map +1 -1
  7. package/dist/interactive-mode-patch.js +285 -148
  8. package/dist/interactive-mode-patch.js.map +1 -1
  9. package/dist/interactive-reset.d.ts +49 -0
  10. package/dist/interactive-reset.d.ts.map +1 -0
  11. package/dist/interactive-reset.js +40 -0
  12. package/dist/interactive-reset.js.map +1 -0
  13. package/dist/pi-tui-editor-patch.d.ts +10 -0
  14. package/dist/pi-tui-editor-patch.d.ts.map +1 -0
  15. package/dist/pi-tui-editor-patch.js +159 -0
  16. package/dist/pi-tui-editor-patch.js.map +1 -0
  17. package/dist/pi-tui-patch.d.ts +2 -0
  18. package/dist/pi-tui-patch.d.ts.map +1 -0
  19. package/dist/pi-tui-patch.js +563 -0
  20. package/dist/pi-tui-patch.js.map +1 -0
  21. package/dist/pi-tui-settings-list-patch.d.ts +11 -0
  22. package/dist/pi-tui-settings-list-patch.d.ts.map +1 -0
  23. package/dist/pi-tui-settings-list-patch.js +38 -0
  24. package/dist/pi-tui-settings-list-patch.js.map +1 -0
  25. package/dist/reset-diagnostics.d.ts +69 -0
  26. package/dist/reset-diagnostics.d.ts.map +1 -0
  27. package/dist/reset-diagnostics.js +41 -0
  28. package/dist/reset-diagnostics.js.map +1 -0
  29. package/dist/sdk.d.ts +5 -21
  30. package/dist/sdk.d.ts.map +1 -1
  31. package/dist/sdk.js +180 -149
  32. package/dist/sdk.js.map +1 -1
  33. package/dist/workspace-transition-interactive.d.ts +1 -0
  34. package/dist/workspace-transition-interactive.d.ts.map +1 -1
  35. package/dist/workspace-transition-interactive.js +7 -17
  36. package/dist/workspace-transition-interactive.js.map +1 -1
  37. package/extensions/__integration__/audit-findings.test.ts +6 -16
  38. package/extensions/__integration__/teams-runtime.test.ts +4 -1
  39. package/extensions/_icons/index.ts +2 -4
  40. package/extensions/_shared/__tests__/image-metadata.test.ts +33 -0
  41. package/extensions/_shared/__tests__/terminal-links.test.ts +18 -0
  42. package/extensions/_shared/image-metadata.ts +99 -0
  43. package/extensions/_shared/inline-preview.ts +1 -1
  44. package/extensions/_shared/pid-registry.ts +0 -1
  45. package/extensions/_shared/terminal-links.ts +22 -0
  46. package/extensions/ask-user-question-tool/index.ts +0 -3
  47. package/extensions/clear/__tests__/clear.test.ts +270 -3
  48. package/extensions/command-expansion/index.ts +1 -1
  49. package/extensions/context-files/index.ts +5 -1
  50. package/extensions/context-fork/__tests__/context-fork.test.ts +94 -1
  51. package/extensions/context-fork/extension.json +1 -1
  52. package/extensions/context-fork/index.ts +32 -0
  53. package/extensions/edit-tool-enhanced/index.ts +2 -1
  54. package/extensions/hooks/index.ts +33 -11
  55. package/extensions/loop/index.ts +14 -1
  56. package/extensions/lsp/index.ts +64 -13
  57. package/extensions/lsp/package.json +2 -2
  58. package/extensions/permissions/__tests__/permissions.test.ts +4 -4
  59. package/extensions/random-spinner/index.ts +7 -642
  60. package/extensions/read-tool-enhanced/index.ts +6 -8
  61. package/extensions/render-stabilizer/__tests__/render-stabilizer.test.ts +4 -5
  62. package/extensions/render-stabilizer/index.ts +6 -6
  63. package/extensions/show-system-prompt/__tests__/show-system-prompt.test.ts +1 -1
  64. package/extensions/slash-command-bridge/__tests__/slash-command-bridge.test.ts +26 -0
  65. package/extensions/slash-command-bridge/index.ts +14 -2
  66. package/extensions/subagent-tool/index.ts +1 -1
  67. package/extensions/subagent-tool/model-resolver.ts +274 -7
  68. package/extensions/tasks/__tests__/state-ui.test.ts +3 -3
  69. package/extensions/tasks/__tests__/widget-subagents.test.ts +2 -2
  70. package/extensions/tasks/commands/register-tasks-extension.ts +10 -10
  71. package/extensions/tasks/state/index.ts +1 -1
  72. package/extensions/tasks/ui/index.ts +2 -7
  73. package/extensions/teams-tool/tools/register-extension.ts +1 -3
  74. package/extensions/web-search-tool/index.ts +2 -1
  75. package/extensions/write-tool-enhanced/__tests__/write-tool-enhanced.test.ts +21 -6
  76. package/extensions/write-tool-enhanced/index.ts +2 -1
  77. package/node_modules/@mariozechner/pi-tui/README.md +56 -34
  78. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts +18 -13
  79. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts.map +1 -1
  80. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js +182 -113
  81. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js.map +1 -1
  82. package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js +3 -3
  83. package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js.map +1 -1
  84. package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts +45 -36
  85. package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts.map +1 -1
  86. package/node_modules/@mariozechner/pi-tui/dist/components/editor.js +489 -325
  87. package/node_modules/@mariozechner/pi-tui/dist/components/editor.js.map +1 -1
  88. package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts +1 -99
  89. package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts.map +1 -1
  90. package/node_modules/@mariozechner/pi-tui/dist/components/image.js +17 -192
  91. package/node_modules/@mariozechner/pi-tui/dist/components/image.js.map +1 -1
  92. package/node_modules/@mariozechner/pi-tui/dist/components/input.d.ts.map +1 -1
  93. package/node_modules/@mariozechner/pi-tui/dist/components/input.js +57 -60
  94. package/node_modules/@mariozechner/pi-tui/dist/components/input.js.map +1 -1
  95. package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts +2 -69
  96. package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts.map +1 -1
  97. package/node_modules/@mariozechner/pi-tui/dist/components/loader.js +5 -102
  98. package/node_modules/@mariozechner/pi-tui/dist/components/loader.js.map +1 -1
  99. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.d.ts.map +1 -1
  100. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js +111 -53
  101. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js.map +1 -1
  102. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts +19 -1
  103. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts.map +1 -1
  104. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js +78 -67
  105. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js.map +1 -1
  106. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts +0 -2
  107. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  108. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js +12 -23
  109. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js.map +1 -1
  110. package/node_modules/@mariozechner/pi-tui/dist/index.d.ts +8 -10
  111. package/node_modules/@mariozechner/pi-tui/dist/index.d.ts.map +1 -1
  112. package/node_modules/@mariozechner/pi-tui/dist/index.js +6 -9
  113. package/node_modules/@mariozechner/pi-tui/dist/index.js.map +1 -1
  114. package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts +108 -238
  115. package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts.map +1 -1
  116. package/node_modules/@mariozechner/pi-tui/dist/keybindings.js +108 -365
  117. package/node_modules/@mariozechner/pi-tui/dist/keybindings.js.map +1 -1
  118. package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts +33 -48
  119. package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts.map +1 -1
  120. package/node_modules/@mariozechner/pi-tui/dist/keys.js +239 -155
  121. package/node_modules/@mariozechner/pi-tui/dist/keys.js.map +1 -1
  122. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts +14 -94
  123. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts.map +1 -1
  124. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js +44 -186
  125. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js.map +1 -1
  126. package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts +13 -58
  127. package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts.map +1 -1
  128. package/node_modules/@mariozechner/pi-tui/dist/terminal.js +78 -111
  129. package/node_modules/@mariozechner/pi-tui/dist/terminal.js.map +1 -1
  130. package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts +24 -110
  131. package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts.map +1 -1
  132. package/node_modules/@mariozechner/pi-tui/dist/tui.js +188 -435
  133. package/node_modules/@mariozechner/pi-tui/dist/tui.js.map +1 -1
  134. package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts +0 -18
  135. package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts.map +1 -1
  136. package/node_modules/@mariozechner/pi-tui/dist/utils.js +251 -119
  137. package/node_modules/@mariozechner/pi-tui/dist/utils.js.map +1 -1
  138. package/node_modules/@mariozechner/pi-tui/package.json +6 -6
  139. package/node_modules/@mariozechner/pi-tui/src/__tests__/__snapshots__/render.test.ts.snap +3 -40
  140. package/node_modules/@mariozechner/pi-tui/src/__tests__/image-component.test.ts +71 -81
  141. package/node_modules/@mariozechner/pi-tui/src/__tests__/render.test.ts +0 -33
  142. package/node_modules/@mariozechner/pi-tui/src/__tests__/terminal-image.test.ts +93 -334
  143. package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-render-scheduling.test.ts +1 -1
  144. package/node_modules/@mariozechner/pi-tui/src/__tests__/utils.test.ts +11 -196
  145. package/node_modules/@mariozechner/pi-tui/src/autocomplete.ts +228 -142
  146. package/node_modules/@mariozechner/pi-tui/src/components/cancellable-loader.ts +3 -3
  147. package/node_modules/@mariozechner/pi-tui/src/components/editor.ts +624 -390
  148. package/node_modules/@mariozechner/pi-tui/src/components/image.ts +17 -227
  149. package/node_modules/@mariozechner/pi-tui/src/components/input.ts +71 -63
  150. package/node_modules/@mariozechner/pi-tui/src/components/loader.ts +5 -137
  151. package/node_modules/@mariozechner/pi-tui/src/components/markdown.ts +143 -52
  152. package/node_modules/@mariozechner/pi-tui/src/components/select-list.ts +136 -70
  153. package/node_modules/@mariozechner/pi-tui/src/components/settings-list.ts +11 -23
  154. package/node_modules/@mariozechner/pi-tui/src/index.ts +17 -36
  155. package/node_modules/@mariozechner/pi-tui/src/keybindings.ts +148 -421
  156. package/node_modules/@mariozechner/pi-tui/src/keys.ts +253 -181
  157. package/node_modules/@mariozechner/pi-tui/src/terminal-image.ts +51 -252
  158. package/node_modules/@mariozechner/pi-tui/src/terminal.ts +78 -133
  159. package/node_modules/@mariozechner/pi-tui/src/tui.ts +202 -478
  160. package/node_modules/@mariozechner/pi-tui/src/utils.ts +289 -125
  161. package/node_modules/@mariozechner/pi-tui/tsconfig.build.json +1 -0
  162. package/package.json +13 -13
  163. package/packages/tallow-tui/node_modules/@types/mime-types/README.md +8 -2
  164. package/packages/tallow-tui/node_modules/@types/mime-types/index.d.ts +6 -0
  165. package/packages/tallow-tui/node_modules/@types/mime-types/package.json +9 -3
  166. package/packages/tallow-tui/node_modules/get-east-asian-width/lookup-data.js +18 -0
  167. package/packages/tallow-tui/node_modules/get-east-asian-width/lookup.js +116 -384
  168. package/packages/tallow-tui/node_modules/get-east-asian-width/package.json +5 -4
  169. package/packages/tallow-tui/node_modules/get-east-asian-width/utilities.js +24 -0
  170. package/packages/tallow-tui/node_modules/marked/README.md +5 -4
  171. package/packages/tallow-tui/node_modules/marked/bin/main.js +10 -8
  172. package/packages/tallow-tui/node_modules/marked/bin/marked.js +2 -1
  173. package/packages/tallow-tui/node_modules/marked/lib/marked.d.ts +156 -125
  174. package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js +67 -2179
  175. package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js.map +3 -3
  176. package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js +67 -2201
  177. package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js.map +3 -3
  178. package/packages/tallow-tui/node_modules/marked/man/marked.1 +4 -2
  179. package/packages/tallow-tui/node_modules/marked/man/marked.1.md +2 -1
  180. package/packages/tallow-tui/node_modules/marked/package.json +26 -34
  181. package/runtime/model-metadata-overrides.ts +10 -1
  182. package/runtime/pid-schema.ts +26 -6
  183. package/skills/tallow-expert/SKILL.md +1 -3
  184. package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts +0 -32
  185. package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts.map +0 -1
  186. package/node_modules/@mariozechner/pi-tui/dist/border-styles.js +0 -46
  187. package/node_modules/@mariozechner/pi-tui/dist/border-styles.js.map +0 -1
  188. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts +0 -52
  189. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts.map +0 -1
  190. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js +0 -89
  191. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js.map +0 -1
  192. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts +0 -14
  193. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts.map +0 -1
  194. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js +0 -55
  195. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js.map +0 -1
  196. package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-change-listener.test.ts +0 -121
  197. package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-ghost-text.test.ts +0 -112
  198. package/node_modules/@mariozechner/pi-tui/src/__tests__/mouse-events.test.ts +0 -134
  199. package/node_modules/@mariozechner/pi-tui/src/__tests__/settings-list.test.ts +0 -49
  200. package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-diff-regression.test.ts +0 -555
  201. package/node_modules/@mariozechner/pi-tui/src/border-styles.ts +0 -60
  202. package/node_modules/@mariozechner/pi-tui/src/components/bordered-box.ts +0 -113
  203. package/node_modules/@mariozechner/pi-tui/src/test-utils/capability-env.ts +0 -56
  204. package/packages/tallow-tui/node_modules/marked/lib/marked.cjs +0 -2211
  205. package/packages/tallow-tui/node_modules/marked/lib/marked.cjs.map +0 -7
  206. package/packages/tallow-tui/node_modules/marked/lib/marked.d.cts +0 -728
  207. package/packages/tallow-tui/node_modules/marked/marked.min.js +0 -69
@@ -0,0 +1,40 @@
1
+ import { recordResetDiagnostic } from "./reset-diagnostics.js";
2
+ /**
3
+ * Clear shared interactive-mode session state at a session boundary.
4
+ *
5
+ * Owns loader/status/pending-message/transcript clearing. Callers decide
6
+ * whether extension UI and subscriptions also belong to the reset boundary.
7
+ *
8
+ * @param mode - Interactive mode instance being reset
9
+ * @param options - Reset behavior toggles and diagnostic reason
10
+ * @returns Nothing
11
+ */
12
+ export function resetInteractiveSessionState(mode, options) {
13
+ recordResetDiagnostic({ kind: "reset_start", reason: options.reason });
14
+ if (mode.loadingAnimation) {
15
+ mode.loadingAnimation.stop?.();
16
+ mode.loadingAnimation = undefined;
17
+ }
18
+ mode.statusContainer.clear();
19
+ mode.pendingMessagesContainer.clear();
20
+ mode.compactionQueuedMessages = [];
21
+ mode.streamingComponent = undefined;
22
+ mode.streamingMessage = undefined;
23
+ mode.pendingTools.clear();
24
+ mode.chatContainer.clear();
25
+ if (options.clearExtensionUi) {
26
+ mode.resetExtensionUI?.();
27
+ }
28
+ if (options.clearSubscription) {
29
+ mode.unsubscribe?.();
30
+ mode.unsubscribe = undefined;
31
+ }
32
+ if (options.requestScrollbackClear) {
33
+ mode.ui.requestScrollbackClear?.();
34
+ }
35
+ if (options.resetRenderGrace) {
36
+ mode.ui.resetRenderGrace?.();
37
+ }
38
+ recordResetDiagnostic({ kind: "reset_complete", reason: options.reason });
39
+ }
40
+ //# sourceMappingURL=interactive-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-reset.js","sourceRoot":"","sources":["../src/interactive-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AA2C/D;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC3C,IAA8B,EAC9B,OAAgC;IAEhC,qBAAqB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC7B,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IACtC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACpC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,qBAAqB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,10 @@
1
+ declare const APPLY_FLAG = "__tallow_pi_tui_editor_patch_applied__";
2
+ type EditorPrototypeLike = {
3
+ [APPLY_FLAG]?: boolean;
4
+ handleInput?: (data: string) => void;
5
+ render?: (width: number) => string[];
6
+ setText?: (text: string) => void;
7
+ };
8
+ export declare function patchEditorPrototype(prototype: EditorPrototypeLike): void;
9
+ export {};
10
+ //# sourceMappingURL=pi-tui-editor-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tui-editor-patch.d.ts","sourceRoot":"","sources":["../src/pi-tui-editor-patch.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,UAAU,2CAA2C,CAAC;AAQ5D,KAAK,mBAAmB,GAAG;IAC1B,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAwGF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CA4EzE"}
@@ -0,0 +1,159 @@
1
+ const APPLY_FLAG = "__tallow_pi_tui_editor_patch_applied__";
2
+ const GHOST_TEXT_COLOR = "\x1b[38;5;242m";
3
+ const RESET = "\x1b[0m";
4
+ const CURSOR_SEGMENT_WITH_MARKER = `${String.fromCodePoint(0xffff)}\x1b[7m \x1b[0m`;
5
+ const CURSOR_SEGMENT = "\x1b[7m \x1b[0m";
6
+ const editorGhostText = new WeakMap();
7
+ const editorChangeListeners = new WeakMap();
8
+ function getGhostText(editor) {
9
+ return editorGhostText.get(editor) ?? null;
10
+ }
11
+ function setGhostText(editor, text) {
12
+ editorGhostText.set(editor, text);
13
+ }
14
+ function getChangeListeners(editor) {
15
+ let listeners = editorChangeListeners.get(editor);
16
+ if (!listeners) {
17
+ listeners = [];
18
+ editorChangeListeners.set(editor, listeners);
19
+ }
20
+ return listeners;
21
+ }
22
+ function notifyChangeListeners(editor) {
23
+ const text = editor.getText();
24
+ for (const listener of getChangeListeners(editor)) {
25
+ listener(text);
26
+ }
27
+ }
28
+ function acceptGhostText(editor) {
29
+ const ghostText = getGhostText(editor);
30
+ if (!ghostText)
31
+ return false;
32
+ setGhostText(editor, null);
33
+ editor.insertTextAtCursor?.(ghostText);
34
+ notifyChangeListeners(editor);
35
+ return true;
36
+ }
37
+ function simpleVisibleWidth(text) {
38
+ return text.length;
39
+ }
40
+ function simpleTruncateToWidth(text, maxWidth, ellipsis = "") {
41
+ if (maxWidth <= 0)
42
+ return "";
43
+ return text.length <= maxWidth ? text : `${text.slice(0, maxWidth - ellipsis.length)}${ellipsis}`;
44
+ }
45
+ function isEscapeInput(data) {
46
+ return data === "\x1b";
47
+ }
48
+ function isTabInput(data) {
49
+ return data === "\t";
50
+ }
51
+ function isEnterInput(data) {
52
+ return data === "\r" || data === "\n" || data === "\x1bOM";
53
+ }
54
+ function getTrailingSpaces(afterCursor) {
55
+ const trailingSpaces = /^ +/.exec(afterCursor);
56
+ return trailingSpaces?.[0] ?? null;
57
+ }
58
+ function maybeInjectGhostText(line, ghostText) {
59
+ if (!ghostText)
60
+ return line;
61
+ for (const cursorSegment of [CURSOR_SEGMENT_WITH_MARKER, CURSOR_SEGMENT]) {
62
+ const cursorIndex = line.indexOf(cursorSegment);
63
+ if (cursorIndex === -1)
64
+ continue;
65
+ const afterCursor = line.slice(cursorIndex + cursorSegment.length);
66
+ const trailingSpaces = getTrailingSpaces(afterCursor);
67
+ if (!trailingSpaces)
68
+ continue;
69
+ const availableWidth = trailingSpaces.length;
70
+ if (availableWidth <= 0)
71
+ continue;
72
+ const truncatedGhost = simpleTruncateToWidth(ghostText, availableWidth, "");
73
+ const remainingSpaces = " ".repeat(Math.max(0, availableWidth - simpleVisibleWidth(truncatedGhost)));
74
+ return `${line.slice(0, cursorIndex + cursorSegment.length)}${GHOST_TEXT_COLOR}${truncatedGhost}${RESET}${remainingSpaces}${afterCursor.slice(trailingSpaces.length)}`;
75
+ }
76
+ return line;
77
+ }
78
+ function shouldClearGhostText(editor, data) {
79
+ if (!getGhostText(editor))
80
+ return false;
81
+ if (editor.autocompleteState)
82
+ return false;
83
+ if (isTabInput(data))
84
+ return false;
85
+ if (isEnterInput(data) && editor.getText().trim().length === 0)
86
+ return false;
87
+ return true;
88
+ }
89
+ export function patchEditorPrototype(prototype) {
90
+ if (prototype[APPLY_FLAG])
91
+ return;
92
+ prototype[APPLY_FLAG] = true;
93
+ const originalRender = prototype.render;
94
+ if (typeof originalRender === "function") {
95
+ prototype.render = function (width) {
96
+ const lines = originalRender.call(this, width);
97
+ const ghostText = getGhostText(this);
98
+ return ghostText ? lines.map((line) => maybeInjectGhostText(line, ghostText)) : lines;
99
+ };
100
+ }
101
+ const originalSetText = prototype.setText;
102
+ if (typeof originalSetText === "function") {
103
+ prototype.setText = function (text) {
104
+ setGhostText(this, null);
105
+ originalSetText.call(this, text);
106
+ notifyChangeListeners(this);
107
+ };
108
+ }
109
+ const originalHandleInput = prototype.handleInput;
110
+ if (typeof originalHandleInput === "function") {
111
+ prototype.handleInput = function (data) {
112
+ if (isEscapeInput(data) && !this.autocompleteState && getGhostText(this)) {
113
+ setGhostText(this, null);
114
+ this.tui?.requestRender?.();
115
+ return;
116
+ }
117
+ if (isTabInput(data) && !this.autocompleteState && acceptGhostText(this)) {
118
+ return;
119
+ }
120
+ if (isEnterInput(data) &&
121
+ !this.disableSubmit &&
122
+ this.getText().trim().length === 0 &&
123
+ acceptGhostText(this)) {
124
+ originalHandleInput.call(this, data);
125
+ return;
126
+ }
127
+ if (shouldClearGhostText(this, data)) {
128
+ setGhostText(this, null);
129
+ }
130
+ const beforeText = this.getText();
131
+ originalHandleInput.call(this, data);
132
+ if (beforeText !== this.getText()) {
133
+ notifyChangeListeners(this);
134
+ }
135
+ };
136
+ }
137
+ Object.defineProperty(prototype, "setGhostText", {
138
+ value: function (text) {
139
+ if (getGhostText(this) !== text) {
140
+ setGhostText(this, text);
141
+ this.tui?.requestRender?.();
142
+ }
143
+ },
144
+ configurable: true,
145
+ });
146
+ Object.defineProperty(prototype, "getGhostText", {
147
+ value: function () {
148
+ return getGhostText(this);
149
+ },
150
+ configurable: true,
151
+ });
152
+ Object.defineProperty(prototype, "addChangeListener", {
153
+ value: function (listener) {
154
+ getChangeListeners(this).push(listener);
155
+ },
156
+ configurable: true,
157
+ });
158
+ }
159
+ //# sourceMappingURL=pi-tui-editor-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tui-editor-patch.js","sourceRoot":"","sources":["../src/pi-tui-editor-patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function applyPiTuiPatches(): Promise<void>;
2
+ //# sourceMappingURL=pi-tui-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tui-patch.d.ts","sourceRoot":"","sources":["../src/pi-tui-patch.ts"],"names":[],"mappings":"AAuqBA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD"}