@shareai-lab/kode 2.1.10 → 2.1.12

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 (172) hide show
  1. package/dist/chunks/{Doctor-XELFCSOT.js → Doctor-UTJUNV3M.js} +9 -9
  2. package/dist/chunks/{LogList-3NTFJCO2.js → LogList-CAO6MIDJ.js} +7 -7
  3. package/dist/chunks/{REPL-IX3IFPIG.js → REPL-SRMLNUNG.js} +36 -36
  4. package/dist/chunks/{ResumeConversation-FVOIVVGE.js → ResumeConversation-5EYFE4H6.js} +38 -38
  5. package/dist/chunks/{agentLoader-6NDWVGB7.js → agentLoader-GRFWSMV2.js} +5 -5
  6. package/dist/chunks/{agentsValidate-3Q5O2KRJ.js → agentsValidate-IF3Q3VLR.js} +6 -6
  7. package/dist/chunks/{ask-U3DRLYA5.js → ask-NPC6SEGF.js} +16 -16
  8. package/dist/chunks/{autoUpdater-7VYMYA45.js → autoUpdater-M5SIW7ML.js} +4 -4
  9. package/dist/chunks/{chunk-A5V3GAYJ.js → chunk-2KYNZVYI.js} +2 -2
  10. package/dist/chunks/{chunk-ZLJJV562.js → chunk-4BRDUQSZ.js} +1 -1
  11. package/dist/chunks/{chunk-RK42LXVF.js → chunk-4EJDFWCI.js} +31 -31
  12. package/dist/chunks/{chunk-YMZMQ5HW.js → chunk-4ZYIY7L3.js} +1 -1
  13. package/dist/chunks/{chunk-QDEOTS5R.js → chunk-5C34UZ3O.js} +13 -13
  14. package/dist/chunks/chunk-5C34UZ3O.js.map +7 -0
  15. package/dist/chunks/{chunk-DW7WPTXF.js → chunk-5DGWKMOP.js} +2 -2
  16. package/dist/chunks/{chunk-QINB6PNL.js → chunk-6CFEV36C.js} +4 -4
  17. package/dist/chunks/{chunk-2GIXG2PW.js → chunk-7BWVLYQK.js} +3 -3
  18. package/dist/chunks/{chunk-67DE2WHP.js → chunk-7BYD6UMZ.js} +1 -1
  19. package/dist/chunks/{chunk-OKUTFUIT.js → chunk-7Y35Q4J6.js} +1 -1
  20. package/dist/chunks/{chunk-3NQ3RYIL.js → chunk-AF5FWWON.js} +4 -4
  21. package/dist/chunks/{chunk-6M3AFBK2.js → chunk-AT6COIQU.js} +1 -1
  22. package/dist/chunks/{chunk-DQFXPZUD.js → chunk-B5VSBSF7.js} +30 -30
  23. package/dist/chunks/{chunk-DQFXPZUD.js.map → chunk-B5VSBSF7.js.map} +2 -2
  24. package/dist/chunks/{chunk-YGUN6S7T.js → chunk-B7CNBBIL.js} +2 -2
  25. package/dist/chunks/{chunk-FC76LCMW.js → chunk-CNB4BTZH.js} +10 -10
  26. package/dist/chunks/{chunk-SBX77F6X.js → chunk-D2NMSBDP.js} +1 -1
  27. package/dist/chunks/{chunk-NYGDXJ46.js → chunk-E3RRQRIO.js} +4 -4
  28. package/dist/chunks/{chunk-43TU2H57.js → chunk-EQZFQOR7.js} +4 -3
  29. package/dist/chunks/chunk-EQZFQOR7.js.map +7 -0
  30. package/dist/chunks/{chunk-USGXOXJW.js → chunk-GGCSITGB.js} +2 -2
  31. package/dist/chunks/{chunk-6L3OLZ5I.js → chunk-GGDPVLLE.js} +3 -3
  32. package/dist/chunks/{chunk-UJYM3ZE2.js → chunk-HABZW45B.js} +1 -1
  33. package/dist/chunks/{chunk-VEN2ZG4I.js → chunk-IFCUTYNL.js} +5 -5
  34. package/dist/chunks/{chunk-4TSHO5ZW.js → chunk-IJZGXESD.js} +2 -2
  35. package/dist/chunks/{chunk-OSAK22DU.js → chunk-J3R2CXOL.js} +2 -2
  36. package/dist/chunks/{chunk-452OIBRO.js → chunk-J6HEHAJK.js} +1 -1
  37. package/dist/chunks/{chunk-RYKGTDT2.js → chunk-JP34R5TN.js} +3 -3
  38. package/dist/chunks/{chunk-KHTZNF45.js → chunk-JZASASUW.js} +1 -1
  39. package/dist/chunks/{chunk-6UOJ5ZP4.js → chunk-K5X5ZH6S.js} +1 -1
  40. package/dist/chunks/{chunk-57YIA3MS.js → chunk-M6K47N44.js} +8 -8
  41. package/dist/chunks/{chunk-CUO52YIF.js → chunk-NBUFUMCY.js} +2 -2
  42. package/dist/chunks/{chunk-HTVISK6B.js → chunk-PSZPJXAZ.js} +26 -28
  43. package/dist/chunks/chunk-PSZPJXAZ.js.map +7 -0
  44. package/dist/chunks/{chunk-5Q25BISS.js → chunk-QHFVTQTJ.js} +1 -1
  45. package/dist/chunks/{chunk-IQ32DUMR.js → chunk-QPKTLTQI.js} +1 -1
  46. package/dist/chunks/{chunk-GGZGXCOQ.js → chunk-SEHZ6CXK.js} +3 -3
  47. package/dist/chunks/{chunk-PDW7EGFG.js → chunk-TGYR4IBE.js} +2 -2
  48. package/dist/chunks/{chunk-NRGEIWNE.js → chunk-U6RPMFMW.js} +2 -2
  49. package/dist/chunks/{chunk-2BJ5A5KW.js → chunk-V5LS4WQ2.js} +1 -1
  50. package/dist/chunks/{chunk-4S27TXKV.js → chunk-XU3JD6EI.js} +5 -5
  51. package/dist/chunks/{chunk-GUN4HJHH.js → chunk-ZOLN5YMS.js} +4 -4
  52. package/dist/chunks/{chunk-KWBK4CET.js → chunk-ZPW2XM2C.js} +7 -7
  53. package/dist/chunks/{client-F6XWSJCH.js → client-OI7WP2WD.js} +5 -5
  54. package/dist/chunks/{customCommands-IKGXEHG3.js → customCommands-FC5MN3RF.js} +5 -5
  55. package/dist/chunks/{engine-X4P7KZ6B.js → engine-IPTVOBJG.js} +15 -15
  56. package/dist/chunks/{env-AII53SJK.js → env-U3P2JBIX.js} +3 -3
  57. package/dist/chunks/{kodeAgentSessionLoad-CR5FNAA6.js → kodeAgentSessionLoad-6YOXIXEK.js} +3 -3
  58. package/dist/chunks/{kodeAgentSessionResume-IMPILS2R.js → kodeAgentSessionResume-D3RLU3UW.js} +3 -3
  59. package/dist/chunks/{kodeHooks-E3HHH7GA.js → kodeHooks-4JYG4G5P.js} +4 -4
  60. package/dist/chunks/{llm-B73NJ55X.js → llm-7IAXAPGJ.js} +13 -13
  61. package/dist/chunks/{llmLazy-LUVJECH5.js → llmLazy-3NRENKYU.js} +1 -1
  62. package/dist/chunks/{mcpCli-FCBRMDSH.js → mcpCli-YTD4LMHI.js} +5 -5
  63. package/dist/chunks/{mentionProcessor-NLXSLNLI.js → mentionProcessor-DLA4M35M.js} +6 -6
  64. package/dist/chunks/{model-WWW5SROR.js → model-2A3EVYK4.js} +5 -5
  65. package/dist/chunks/{openai-5OUY3SXG.js → openai-VWKDNTC4.js} +5 -5
  66. package/dist/chunks/{permissions-CGZ3RRJT.js → permissions-LGMUKLID.js} +6 -6
  67. package/dist/chunks/{pluginRuntime-SCPTZM6F.js → pluginRuntime-RYFDHMVD.js} +3 -3
  68. package/dist/chunks/{pluginValidation-VNCCNUMA.js → pluginValidation-VBUTEACA.js} +7 -7
  69. package/dist/chunks/{registry-2UNFDLQM.js → registry-W5BED55O.js} +29 -29
  70. package/dist/chunks/{ripgrep-NWIVPJJ7.js → ripgrep-3F7VAKCB.js} +4 -4
  71. package/dist/chunks/{runNonTextPrintMode-TW7JEOIL.js → runNonTextPrintMode-EFJVB3QP.js} +9 -9
  72. package/dist/chunks/{server-QIVWLY63.js → server-AQYRBBDC.js} +25 -25
  73. package/dist/chunks/{server-7Z4J7HNO.js → server-DXXYOE4J.js} +27 -27
  74. package/dist/chunks/{skillMarketplace-C6YLA4HR.js → skillMarketplace-TEC7KBZM.js} +4 -4
  75. package/dist/chunks/{src-GCXFXXZH.js → src-EDQUDXM6.js} +24 -24
  76. package/dist/chunks/{src-LCYS363P.js → src-K4JCKY4R.js} +70 -70
  77. package/dist/chunks/{src-FLB236NV.js → src-UIU5LLYS.js} +27 -27
  78. package/dist/chunks/{thinking-HSV5XRET.js → thinking-E4Y7GXRR.js} +6 -6
  79. package/dist/chunks/{toolPermissionSettings-YW5IDAWZ.js → toolPermissionSettings-TX3WXTTX.js} +4 -4
  80. package/dist/chunks/{webOnlyMode-3IKZX4VY.js → webOnlyMode-QDIFYGU5.js} +1 -1
  81. package/dist/entrypoints/cli.js +1 -1
  82. package/dist/entrypoints/daemon.js +1 -1
  83. package/dist/entrypoints/mcp.js +25 -25
  84. package/dist/index.js +5 -5
  85. package/dist/sdk/core.cjs +13 -13
  86. package/dist/sdk/core.cjs.map +1 -1
  87. package/dist/sdk/core.js +13 -13
  88. package/dist/sdk/core.js.map +1 -1
  89. package/dist/sdk/tools.cjs +19 -20
  90. package/dist/sdk/tools.cjs.map +2 -2
  91. package/dist/sdk/tools.js +19 -20
  92. package/dist/sdk/tools.js.map +2 -2
  93. package/dist/vendor/seccomp/arm64/apply-seccomp +1 -0
  94. package/dist/vendor/seccomp/arm64/unix-block.bpf +1 -0
  95. package/dist/vendor/seccomp/x64/apply-seccomp +1 -0
  96. package/dist/vendor/seccomp/x64/unix-block.bpf +1 -0
  97. package/package.json +13 -13
  98. package/dist/chunks/chunk-43TU2H57.js.map +0 -7
  99. package/dist/chunks/chunk-HTVISK6B.js.map +0 -7
  100. package/dist/chunks/chunk-QDEOTS5R.js.map +0 -7
  101. /package/dist/chunks/{Doctor-XELFCSOT.js.map → Doctor-UTJUNV3M.js.map} +0 -0
  102. /package/dist/chunks/{LogList-3NTFJCO2.js.map → LogList-CAO6MIDJ.js.map} +0 -0
  103. /package/dist/chunks/{REPL-IX3IFPIG.js.map → REPL-SRMLNUNG.js.map} +0 -0
  104. /package/dist/chunks/{ResumeConversation-FVOIVVGE.js.map → ResumeConversation-5EYFE4H6.js.map} +0 -0
  105. /package/dist/chunks/{agentLoader-6NDWVGB7.js.map → agentLoader-GRFWSMV2.js.map} +0 -0
  106. /package/dist/chunks/{agentsValidate-3Q5O2KRJ.js.map → agentsValidate-IF3Q3VLR.js.map} +0 -0
  107. /package/dist/chunks/{ask-U3DRLYA5.js.map → ask-NPC6SEGF.js.map} +0 -0
  108. /package/dist/chunks/{autoUpdater-7VYMYA45.js.map → autoUpdater-M5SIW7ML.js.map} +0 -0
  109. /package/dist/chunks/{chunk-A5V3GAYJ.js.map → chunk-2KYNZVYI.js.map} +0 -0
  110. /package/dist/chunks/{chunk-ZLJJV562.js.map → chunk-4BRDUQSZ.js.map} +0 -0
  111. /package/dist/chunks/{chunk-RK42LXVF.js.map → chunk-4EJDFWCI.js.map} +0 -0
  112. /package/dist/chunks/{chunk-YMZMQ5HW.js.map → chunk-4ZYIY7L3.js.map} +0 -0
  113. /package/dist/chunks/{chunk-DW7WPTXF.js.map → chunk-5DGWKMOP.js.map} +0 -0
  114. /package/dist/chunks/{chunk-QINB6PNL.js.map → chunk-6CFEV36C.js.map} +0 -0
  115. /package/dist/chunks/{chunk-2GIXG2PW.js.map → chunk-7BWVLYQK.js.map} +0 -0
  116. /package/dist/chunks/{chunk-67DE2WHP.js.map → chunk-7BYD6UMZ.js.map} +0 -0
  117. /package/dist/chunks/{chunk-OKUTFUIT.js.map → chunk-7Y35Q4J6.js.map} +0 -0
  118. /package/dist/chunks/{chunk-3NQ3RYIL.js.map → chunk-AF5FWWON.js.map} +0 -0
  119. /package/dist/chunks/{chunk-6M3AFBK2.js.map → chunk-AT6COIQU.js.map} +0 -0
  120. /package/dist/chunks/{chunk-YGUN6S7T.js.map → chunk-B7CNBBIL.js.map} +0 -0
  121. /package/dist/chunks/{chunk-FC76LCMW.js.map → chunk-CNB4BTZH.js.map} +0 -0
  122. /package/dist/chunks/{chunk-SBX77F6X.js.map → chunk-D2NMSBDP.js.map} +0 -0
  123. /package/dist/chunks/{chunk-NYGDXJ46.js.map → chunk-E3RRQRIO.js.map} +0 -0
  124. /package/dist/chunks/{chunk-USGXOXJW.js.map → chunk-GGCSITGB.js.map} +0 -0
  125. /package/dist/chunks/{chunk-6L3OLZ5I.js.map → chunk-GGDPVLLE.js.map} +0 -0
  126. /package/dist/chunks/{chunk-UJYM3ZE2.js.map → chunk-HABZW45B.js.map} +0 -0
  127. /package/dist/chunks/{chunk-VEN2ZG4I.js.map → chunk-IFCUTYNL.js.map} +0 -0
  128. /package/dist/chunks/{chunk-4TSHO5ZW.js.map → chunk-IJZGXESD.js.map} +0 -0
  129. /package/dist/chunks/{chunk-OSAK22DU.js.map → chunk-J3R2CXOL.js.map} +0 -0
  130. /package/dist/chunks/{chunk-452OIBRO.js.map → chunk-J6HEHAJK.js.map} +0 -0
  131. /package/dist/chunks/{chunk-RYKGTDT2.js.map → chunk-JP34R5TN.js.map} +0 -0
  132. /package/dist/chunks/{chunk-KHTZNF45.js.map → chunk-JZASASUW.js.map} +0 -0
  133. /package/dist/chunks/{chunk-6UOJ5ZP4.js.map → chunk-K5X5ZH6S.js.map} +0 -0
  134. /package/dist/chunks/{chunk-57YIA3MS.js.map → chunk-M6K47N44.js.map} +0 -0
  135. /package/dist/chunks/{chunk-CUO52YIF.js.map → chunk-NBUFUMCY.js.map} +0 -0
  136. /package/dist/chunks/{chunk-5Q25BISS.js.map → chunk-QHFVTQTJ.js.map} +0 -0
  137. /package/dist/chunks/{chunk-IQ32DUMR.js.map → chunk-QPKTLTQI.js.map} +0 -0
  138. /package/dist/chunks/{chunk-GGZGXCOQ.js.map → chunk-SEHZ6CXK.js.map} +0 -0
  139. /package/dist/chunks/{chunk-PDW7EGFG.js.map → chunk-TGYR4IBE.js.map} +0 -0
  140. /package/dist/chunks/{chunk-NRGEIWNE.js.map → chunk-U6RPMFMW.js.map} +0 -0
  141. /package/dist/chunks/{chunk-2BJ5A5KW.js.map → chunk-V5LS4WQ2.js.map} +0 -0
  142. /package/dist/chunks/{chunk-4S27TXKV.js.map → chunk-XU3JD6EI.js.map} +0 -0
  143. /package/dist/chunks/{chunk-GUN4HJHH.js.map → chunk-ZOLN5YMS.js.map} +0 -0
  144. /package/dist/chunks/{chunk-KWBK4CET.js.map → chunk-ZPW2XM2C.js.map} +0 -0
  145. /package/dist/chunks/{client-F6XWSJCH.js.map → client-OI7WP2WD.js.map} +0 -0
  146. /package/dist/chunks/{customCommands-IKGXEHG3.js.map → customCommands-FC5MN3RF.js.map} +0 -0
  147. /package/dist/chunks/{engine-X4P7KZ6B.js.map → engine-IPTVOBJG.js.map} +0 -0
  148. /package/dist/chunks/{env-AII53SJK.js.map → env-U3P2JBIX.js.map} +0 -0
  149. /package/dist/chunks/{kodeAgentSessionLoad-CR5FNAA6.js.map → kodeAgentSessionLoad-6YOXIXEK.js.map} +0 -0
  150. /package/dist/chunks/{kodeAgentSessionResume-IMPILS2R.js.map → kodeAgentSessionResume-D3RLU3UW.js.map} +0 -0
  151. /package/dist/chunks/{kodeHooks-E3HHH7GA.js.map → kodeHooks-4JYG4G5P.js.map} +0 -0
  152. /package/dist/chunks/{llm-B73NJ55X.js.map → llm-7IAXAPGJ.js.map} +0 -0
  153. /package/dist/chunks/{llmLazy-LUVJECH5.js.map → llmLazy-3NRENKYU.js.map} +0 -0
  154. /package/dist/chunks/{mcpCli-FCBRMDSH.js.map → mcpCli-YTD4LMHI.js.map} +0 -0
  155. /package/dist/chunks/{mentionProcessor-NLXSLNLI.js.map → mentionProcessor-DLA4M35M.js.map} +0 -0
  156. /package/dist/chunks/{model-WWW5SROR.js.map → model-2A3EVYK4.js.map} +0 -0
  157. /package/dist/chunks/{openai-5OUY3SXG.js.map → openai-VWKDNTC4.js.map} +0 -0
  158. /package/dist/chunks/{permissions-CGZ3RRJT.js.map → permissions-LGMUKLID.js.map} +0 -0
  159. /package/dist/chunks/{pluginRuntime-SCPTZM6F.js.map → pluginRuntime-RYFDHMVD.js.map} +0 -0
  160. /package/dist/chunks/{pluginValidation-VNCCNUMA.js.map → pluginValidation-VBUTEACA.js.map} +0 -0
  161. /package/dist/chunks/{registry-2UNFDLQM.js.map → registry-W5BED55O.js.map} +0 -0
  162. /package/dist/chunks/{ripgrep-NWIVPJJ7.js.map → ripgrep-3F7VAKCB.js.map} +0 -0
  163. /package/dist/chunks/{runNonTextPrintMode-TW7JEOIL.js.map → runNonTextPrintMode-EFJVB3QP.js.map} +0 -0
  164. /package/dist/chunks/{server-7Z4J7HNO.js.map → server-AQYRBBDC.js.map} +0 -0
  165. /package/dist/chunks/{server-QIVWLY63.js.map → server-DXXYOE4J.js.map} +0 -0
  166. /package/dist/chunks/{skillMarketplace-C6YLA4HR.js.map → skillMarketplace-TEC7KBZM.js.map} +0 -0
  167. /package/dist/chunks/{src-GCXFXXZH.js.map → src-EDQUDXM6.js.map} +0 -0
  168. /package/dist/chunks/{src-LCYS363P.js.map → src-K4JCKY4R.js.map} +0 -0
  169. /package/dist/chunks/{src-FLB236NV.js.map → src-UIU5LLYS.js.map} +0 -0
  170. /package/dist/chunks/{thinking-HSV5XRET.js.map → thinking-E4Y7GXRR.js.map} +0 -0
  171. /package/dist/chunks/{toolPermissionSettings-YW5IDAWZ.js.map → toolPermissionSettings-TX3WXTTX.js.map} +0 -0
  172. /package/dist/chunks/{webOnlyMode-3IKZX4VY.js.map → webOnlyMode-QDIFYGU5.js.map} +0 -0
@@ -0,0 +1 @@
1
+ #\!/bin/sh
@@ -0,0 +1 @@
1
+ placeholder
@@ -0,0 +1 @@
1
+ #\!/bin/sh
@@ -0,0 +1 @@
1
+ placeholder
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shareai-lab/kode",
3
- "version": "2.1.10",
3
+ "version": "2.1.12",
4
4
  "workspaces": [
5
5
  "apps/*",
6
6
  "packages/*"
@@ -155,18 +155,18 @@
155
155
  "zod-to-json-schema": "^3.24.6"
156
156
  },
157
157
  "optionalDependencies": {
158
- "@shareai-lab/kode-bin-darwin-arm64": "2.1.0",
159
- "@shareai-lab/kode-bin-darwin-x64": "2.1.0",
160
- "@shareai-lab/kode-bin-linux-arm64": "2.1.0",
161
- "@shareai-lab/kode-bin-linux-x64": "2.1.0",
162
- "@shareai-lab/kode-bin-win32-arm64": "2.1.0",
163
- "@shareai-lab/kode-bin-win32-x64": "2.1.0",
164
- "@shareai-lab/kode-ripgrep-darwin-arm64": "2.1.0",
165
- "@shareai-lab/kode-ripgrep-darwin-x64": "2.1.0",
166
- "@shareai-lab/kode-ripgrep-linux-arm64": "2.1.0",
167
- "@shareai-lab/kode-ripgrep-linux-x64": "2.1.0",
168
- "@shareai-lab/kode-ripgrep-win32-arm64": "2.1.0",
169
- "@shareai-lab/kode-ripgrep-win32-x64": "2.1.0"
158
+ "@shareai-lab/kode-bin-darwin-arm64": "2.1.12",
159
+ "@shareai-lab/kode-bin-darwin-x64": "2.1.12",
160
+ "@shareai-lab/kode-bin-linux-arm64": "2.1.12",
161
+ "@shareai-lab/kode-bin-linux-x64": "2.1.12",
162
+ "@shareai-lab/kode-bin-win32-arm64": "2.1.12",
163
+ "@shareai-lab/kode-bin-win32-x64": "2.1.12",
164
+ "@shareai-lab/kode-ripgrep-darwin-arm64": "2.1.12",
165
+ "@shareai-lab/kode-ripgrep-darwin-x64": "2.1.12",
166
+ "@shareai-lab/kode-ripgrep-linux-arm64": "2.1.12",
167
+ "@shareai-lab/kode-ripgrep-linux-x64": "2.1.12",
168
+ "@shareai-lab/kode-ripgrep-win32-arm64": "2.1.12",
169
+ "@shareai-lab/kode-ripgrep-win32-x64": "2.1.12"
170
170
  },
171
171
  "devDependencies": {
172
172
  "@codemirror/lang-css": "^6.3.1",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../apps/cli/src/utils/stdio.ts", "../../apps/cli/src/utils/terminal.ts", "../../apps/cli/src/ui/utils/terminalCapabilityManager.ts", "../../apps/cli/src/ui/contexts/KeypressContext.tsx", "../../apps/cli/src/ui/hooks/useKeypress.ts"],
4
- "sourcesContent": ["import { mkdirSync, writeFileSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { CACHE_PATHS, DATE } from '#core/logging/log/paths'\n\ntype WriteFn = typeof process.stdout.write\ntype WriteCallback = (err?: NodeJS.ErrnoException | null) => void\n\n// Capture original write fns before any monkey patching.\nconst originalStdoutWrite: WriteFn = process.stdout.write.bind(process.stdout)\nconst originalStderrWrite: WriteFn = process.stderr.write.bind(process.stderr)\n\n// Expose original write fns for code outside the CLI layer (e.g. core notifier) so\n// terminal control sequences can bypass the TUI stdio guard without corrupting Ink.\n;(globalThis as any).__KODE_ORIGINAL_STDOUT_WRITE__ ??= originalStdoutWrite\n;(globalThis as any).__KODE_ORIGINAL_STDERR_WRITE__ ??= originalStderrWrite\n\nexport function writeToStdout(\n chunk: Uint8Array | string,\n cb?: WriteCallback,\n): boolean\nexport function writeToStdout(\n chunk: Uint8Array | string,\n encoding?: BufferEncoding,\n cb?: WriteCallback,\n): boolean\nexport function writeToStdout(\n chunk: Uint8Array | string,\n encodingOrCb?: BufferEncoding | WriteCallback,\n cb?: WriteCallback,\n): boolean {\n return (originalStdoutWrite as unknown as any)(chunk, encodingOrCb, cb)\n}\n\nexport function writeToStderr(\n chunk: Uint8Array | string,\n cb?: WriteCallback,\n): boolean\nexport function writeToStderr(\n chunk: Uint8Array | string,\n encoding?: BufferEncoding,\n cb?: WriteCallback,\n): boolean\nexport function writeToStderr(\n chunk: Uint8Array | string,\n encodingOrCb?: BufferEncoding | WriteCallback,\n cb?: WriteCallback,\n): boolean {\n return (originalStderrWrite as unknown as any)(chunk, encodingOrCb, cb)\n}\n\nconst CSI = '\\x1b['\nconst SYNC_OUTPUT_START = `${CSI}?2026h`\nconst SYNC_OUTPUT_END = `${CSI}?2026l`\n\nlet syncOutputActive = false\nlet syncOutputFlushHandle: ReturnType<typeof setImmediate> | null = null\nlet syncOutputExitHooked = false\n\nfunction shouldUseSynchronizedOutput(): boolean {\n if (process.env.NODE_ENV === 'test') return false\n if (!process.stdout?.isTTY) return false\n const screenReaderEnv =\n process.env.KODE_SCREEN_READER ?? process.env.SCREENREADER\n if (screenReaderEnv) return false\n\n const env = process.env.KODE_SYNC_OUTPUT\n if (env === '0' || env === 'false') return false\n\n // Default to enabled on TTY unless explicitly disabled.\n return true\n}\n\nfunction ensureSyncOutputExitHooked(): void {\n if (syncOutputExitHooked) return\n syncOutputExitHooked = true\n process.once('exit', () => {\n if (!syncOutputActive) return\n try {\n originalStdoutWrite(SYNC_OUTPUT_END)\n } catch {\n // best-effort only\n }\n })\n}\n\nfunction beginSynchronizedOutput(): void {\n if (syncOutputActive) return\n syncOutputActive = true\n ensureSyncOutputExitHooked()\n originalStdoutWrite(SYNC_OUTPUT_START)\n}\n\nfunction scheduleEndSynchronizedOutput(): void {\n if (!syncOutputActive) return\n\n if (syncOutputFlushHandle) {\n clearImmediate(syncOutputFlushHandle)\n }\n\n syncOutputFlushHandle = setImmediate(() => {\n syncOutputFlushHandle = null\n if (!syncOutputActive) return\n syncOutputActive = false\n originalStdoutWrite(SYNC_OUTPUT_END)\n })\n}\n\nfunction writeToInkStdout(\n chunk: Uint8Array | string,\n cb?: WriteCallback,\n): boolean\nfunction writeToInkStdout(\n chunk: Uint8Array | string,\n encoding?: BufferEncoding,\n cb?: WriteCallback,\n): boolean\nfunction writeToInkStdout(\n chunk: Uint8Array | string,\n encodingOrCb?: BufferEncoding | WriteCallback,\n cb?: WriteCallback,\n): boolean {\n if (!shouldUseSynchronizedOutput()) {\n return (originalStdoutWrite as unknown as any)(chunk, encodingOrCb, cb)\n }\n\n beginSynchronizedOutput()\n const result = (originalStdoutWrite as unknown as any)(chunk, encodingOrCb, cb)\n scheduleEndSynchronizedOutput()\n return result\n}\n\nexport function createInkStdio(): {\n stdout: NodeJS.WriteStream\n stderr: NodeJS.WriteStream\n} {\n const stdout = new Proxy(process.stdout, {\n get(target, prop, receiver) {\n if (prop === 'write') return writeToInkStdout\n const value = Reflect.get(target, prop, receiver)\n return typeof value === 'function' ? value.bind(target) : value\n },\n }) as unknown as NodeJS.WriteStream\n\n const stderr = new Proxy(process.stderr, {\n get(target, prop, receiver) {\n if (prop === 'write') return writeToStderr\n const value = Reflect.get(target, prop, receiver)\n return typeof value === 'function' ? value.bind(target) : value\n },\n }) as unknown as NodeJS.WriteStream\n\n return { stdout, stderr }\n}\n\nconst CAPTURE_MAX_BYTES = 128 * 1024\nlet captureBytes = 0\nconst captureChunks: string[] = []\n\nfunction chunkToString(\n chunk: Uint8Array | string,\n encoding: BufferEncoding | undefined,\n): string {\n if (typeof chunk === 'string') return chunk\n try {\n // Buffer is a Uint8Array subclass; Buffer.from avoids surprises for non-Buffer Uint8Array.\n return Buffer.from(chunk).toString(encoding ?? 'utf8')\n } catch {\n return String(chunk)\n }\n}\n\nfunction recordPatchedWrite(\n streamLabel: 'stdout' | 'stderr',\n chunk: Uint8Array | string,\n encoding: BufferEncoding | undefined,\n): void {\n if (captureBytes >= CAPTURE_MAX_BYTES) return\n const text = chunkToString(chunk, encoding)\n const remaining = CAPTURE_MAX_BYTES - captureBytes\n const slice = text.length > remaining ? text.slice(0, remaining) : text\n captureBytes += slice.length\n captureChunks.push(`[${streamLabel}] ${slice}`)\n}\n\nfunction flushCapturedWritesToFile(): void {\n if (captureChunks.length === 0) return\n try {\n const dir = CACHE_PATHS.errors()\n mkdirSync(dir, { recursive: true })\n const filePath = join(dir, `stdio-${DATE}.log`)\n writeFileSync(filePath, captureChunks.join(''), 'utf8')\n } catch {\n // best-effort only\n }\n}\n\nexport function getCapturedTuiStdioText(): string | null {\n return captureChunks.length > 0 ? captureChunks.join('') : null\n}\n\nexport function getCapturedTuiStdioLogPath(): string {\n return join(CACHE_PATHS.errors(), `stdio-${DATE}.log`)\n}\n\nexport function flushCapturedTuiStdioToFile(): string | null {\n if (captureChunks.length === 0) return null\n try {\n const dir = CACHE_PATHS.errors()\n mkdirSync(dir, { recursive: true })\n const filePath = join(dir, `stdio-${DATE}.log`)\n writeFileSync(filePath, captureChunks.join(''), 'utf8')\n return filePath\n } catch {\n return null\n }\n}\n\nexport function clearCapturedTuiStdio(): void {\n captureBytes = 0\n captureChunks.length = 0\n}\n\nlet stdioPatched = false\nlet restoreStdioPatch: (() => void) | null = null\nlet inkStdio: ReturnType<typeof createInkStdio> | null = null\n\nexport function isStdioPatchedForTui(): boolean {\n return stdioPatched\n}\n\nexport function ensureTuiStdioPatched(): {\n stdout: NodeJS.WriteStream\n stderr: NodeJS.WriteStream\n} {\n if (process.env.NODE_ENV === 'test') {\n return { stdout: process.stdout, stderr: process.stderr }\n }\n\n if (!inkStdio) {\n inkStdio = createInkStdio()\n }\n\n if (stdioPatched) {\n return inkStdio\n }\n\n const previousStdoutWrite = process.stdout.write.bind(process.stdout)\n const previousStderrWrite = process.stderr.write.bind(process.stderr)\n\n process.stdout.write = (\n chunk: Uint8Array | string,\n encodingOrCb?:\n | BufferEncoding\n | ((err?: NodeJS.ErrnoException | null) => void),\n cb?: (err?: NodeJS.ErrnoException | null) => void,\n ) => {\n const encoding = typeof encodingOrCb === 'string' ? encodingOrCb : undefined\n recordPatchedWrite('stdout', chunk, encoding)\n const callback = typeof encodingOrCb === 'function' ? encodingOrCb : cb\n callback?.()\n return true\n }\n\n process.stderr.write = (\n chunk: Uint8Array | string,\n encodingOrCb?:\n | BufferEncoding\n | ((err?: NodeJS.ErrnoException | null) => void),\n cb?: (err?: NodeJS.ErrnoException | null) => void,\n ) => {\n const encoding = typeof encodingOrCb === 'string' ? encodingOrCb : undefined\n recordPatchedWrite('stderr', chunk, encoding)\n const callback = typeof encodingOrCb === 'function' ? encodingOrCb : cb\n callback?.()\n return true\n }\n\n restoreStdioPatch = () => {\n process.stdout.write = previousStdoutWrite\n process.stderr.write = previousStderrWrite\n stdioPatched = false\n flushCapturedWritesToFile()\n }\n\n stdioPatched = true\n // Ensure we don't lose evidence when the process terminates.\n process.once('exit', () => flushCapturedWritesToFile())\n\n return inkStdio\n}\n\nexport function restoreTuiStdioPatch(): void {\n restoreStdioPatch?.()\n restoreStdioPatch = null\n}\n", "import { safeParseJSON } from '#core/utils/json'\nimport { logError } from '#core/utils/log'\nimport { writeToStdout as writeToRealStdout } from '#cli-utils/stdio'\n\nfunction writeToTty(sequence: string): void {\n if (!process.stdout?.isTTY) return\n writeToRealStdout(sequence)\n}\n\nlet alternateScreenRefCount = 0\n\nexport function setTerminalTitle(title: string): void {\n if (process.platform === 'win32') {\n process.title = title ? `\u2733 ${title}` : title\n } else {\n writeToTty(`\\x1b]0;${title ? `\u2733 ${title}` : ''}\\x07`)\n }\n}\n\nexport async function updateTerminalTitle(message: string): Promise<void> {\n try {\n const { queryQuick } = await import('#core/ai/llm')\n const result = await queryQuick({\n systemPrompt: [\n \"Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.\",\n ],\n userPrompt: message,\n enablePromptCaching: true,\n })\n\n const content = result.message.content\n .filter(_ => _.type === 'text')\n .map(_ => _.text)\n .join('')\n\n const response = safeParseJSON(content)\n if (\n response &&\n typeof response === 'object' &&\n 'isNewTopic' in response &&\n 'title' in response\n ) {\n if (response.isNewTopic && response.title) {\n setTerminalTitle(response.title as string)\n }\n }\n } catch (error) {\n logError(error)\n }\n}\n\nexport function clearTerminal(): Promise<void> {\n return clearViewport()\n}\n\nexport function clearViewport(): Promise<void> {\n if (!process.stdout?.isTTY) return Promise.resolve()\n return new Promise(resolve => {\n // Clear the viewport without wiping scrollback.\n // - CSI 2J: clear screen\n // - CSI H : move cursor to home\n //\n // Avoid CSI 3J (clear scrollback), so the user can still scroll up to see\n // prior shell output and earlier CLI output.\n writeToRealStdout('\\x1b[2J\\x1b[H', () => resolve())\n })\n}\n\nexport function clearScrollback(): Promise<void> {\n if (!process.stdout?.isTTY) return Promise.resolve()\n return new Promise(resolve => {\n // Clear the viewport AND wipe scrollback (useful for sensitive dialogs).\n // - CSI 2J: clear screen\n // - CSI 3J: clear scrollback\n // - CSI H : move cursor to home\n writeToRealStdout('\\x1b[2J\\x1b[3J\\x1b[H', () => resolve())\n })\n}\n\nexport function enableMouseEvents(): void {\n writeToTty('\\x1b[?1002h\\x1b[?1006h')\n}\n\nexport function disableMouseEvents(): void {\n writeToTty('\\x1b[?1006l\\x1b[?1002l')\n}\n\nexport function enableKittyKeyboardProtocol(): void {\n writeToTty('\\x1b[>1u')\n}\n\nexport function disableKittyKeyboardProtocol(): void {\n writeToTty('\\x1b[<u')\n}\n\nexport function enableModifyOtherKeys(): void {\n writeToTty('\\x1b[>4;2m')\n}\n\nexport function disableModifyOtherKeys(): void {\n writeToTty('\\x1b[>4;0m')\n}\n\nexport function enableBracketedPasteMode(): void {\n writeToTty('\\x1b[?2004h')\n}\n\nexport function disableBracketedPasteMode(): void {\n writeToTty('\\x1b[?2004l')\n}\n\nexport function enableLineWrapping(): void {\n writeToTty('\\x1b[?7h')\n}\n\nexport function disableLineWrapping(): void {\n writeToTty('\\x1b[?7l')\n}\n\nexport function isAlternateScreenActive(): boolean {\n return alternateScreenRefCount > 0\n}\n\nexport function enterAlternateScreen(): void {\n if (!process.stdout?.isTTY) return\n // Make alternate screen idempotent and composable (nested uses won't break).\n alternateScreenRefCount += 1\n if (alternateScreenRefCount === 1) {\n writeToTty('\\x1b[?1049h')\n }\n}\n\nexport function exitAlternateScreen(): void {\n if (!process.stdout?.isTTY) return\n if (alternateScreenRefCount <= 0) return\n alternateScreenRefCount -= 1\n if (alternateScreenRefCount === 0) {\n writeToTty('\\x1b[?1049l')\n }\n}\n\nexport function shouldEnterAlternateScreen(\n useAlternateBuffer: boolean,\n isScreenReader: boolean,\n): boolean {\n return useAlternateBuffer && !isScreenReader\n}\n\nfunction isScreenReaderEnabled(): boolean {\n return Boolean(process.env.KODE_SCREEN_READER ?? process.env.SCREENREADER)\n}\n\nexport async function withEphemeralAlternateScreen<T>(\n fn: () => Promise<T> | T,\n options?: { enabled?: boolean; clearViewport?: boolean },\n): Promise<T> {\n const enabled =\n options?.enabled ??\n (process.stdin.isTTY && process.stdout.isTTY && !isScreenReaderEnabled())\n if (!enabled) return await fn()\n\n enterAlternateScreen()\n try {\n if (options?.clearViewport !== false) {\n await clearTerminal()\n }\n return await fn()\n } finally {\n exitAlternateScreen()\n }\n}\n", "import * as fs from 'node:fs'\nimport {\n disableBracketedPasteMode,\n disableKittyKeyboardProtocol,\n disableModifyOtherKeys,\n enableBracketedPasteMode,\n enableKittyKeyboardProtocol,\n enableModifyOtherKeys,\n} from '#cli-utils/terminal'\nimport { debug as debugLogger } from '#core/utils/debugLogger'\n\nexport type TerminalBackgroundColor = string | undefined\n\nexport class TerminalCapabilityManager {\n private static instance: TerminalCapabilityManager | undefined\n\n private static readonly KITTY_QUERY = '\\x1b[?u'\n private static readonly OSC_11_QUERY = '\\x1b]11;?\\x1b\\\\'\n private static readonly TERMINAL_NAME_QUERY = '\\x1b[>q'\n private static readonly DEVICE_ATTRIBUTES_QUERY = '\\x1b[c'\n private static readonly MODIFY_OTHER_KEYS_QUERY = '\\x1b[>4;?m'\n private static readonly BRACKETED_PASTE_QUERY = '\\x1b[?2004$p'\n\n // eslint-disable-next-line no-control-regex\n private static readonly KITTY_REGEX = /\\x1b\\[\\?(\\d+)u/\n // eslint-disable-next-line no-control-regex\n private static readonly TERMINAL_NAME_REGEX = /\\x1bP>\\|(.+?)(\\x1b\\\\|\\x07)/\n // eslint-disable-next-line no-control-regex\n private static readonly DEVICE_ATTRIBUTES_REGEX = /\\x1b\\[\\?(\\d+)(;\\d+)*c/\n // eslint-disable-next-line no-control-regex\n private static readonly OSC_11_REGEX =\n /\\x1b\\]11;rgb:([0-9a-fA-F]{1,4})\\/([0-9a-fA-F]{1,4})\\/([0-9a-fA-F]{1,4})(\\x1b\\\\|\\x07)?/\n // eslint-disable-next-line no-control-regex\n private static readonly MODIFY_OTHER_KEYS_REGEX = /\\x1b\\[>4;(\\d+)m/\n // eslint-disable-next-line no-control-regex\n private static readonly BRACKETED_PASTE_REGEX = /\\x1b\\[\\?2004;([1-4])\\$y/\n\n static getInstance(): TerminalCapabilityManager {\n if (!TerminalCapabilityManager.instance) {\n TerminalCapabilityManager.instance = new TerminalCapabilityManager()\n }\n return TerminalCapabilityManager.instance\n }\n\n private terminalBackgroundColor: TerminalBackgroundColor\n private kittySupported = false\n private kittyEnabled = false\n private detectionComplete = false\n private terminalName: string | undefined\n private modifyOtherKeysSupported = false\n private modifyOtherKeysEnabled = false\n private bracketedPasteSupported = false\n private bracketedPasteEnabled = false\n\n async detectCapabilities(timeoutMs = 1000): Promise<void> {\n if (this.detectionComplete) return\n this.detectionComplete = true\n\n if (!process.stdout?.isTTY || !process.stdin?.isTTY) return\n\n const stdin = process.stdin\n const wasRaw = stdin.isRaw\n try {\n stdin.setEncoding('utf8')\n if (stdin.isTTY && !wasRaw) stdin.setRawMode(true)\n } catch (error) {\n debugLogger.warn('TERMINAL_CAPABILITY_RAWMODE_FAILED', { error })\n }\n\n await new Promise<void>(resolve => {\n let buffer = ''\n let kittyReceived = false\n let bracketedPasteReceived = false\n let terminalNameReceived = false\n let osc11Received = false\n let deviceAttributesReceived = false\n let modifyOtherKeysReceived = false\n\n const cleanup = () => {\n stdin.removeListener('data', onData)\n if (stdin.isTTY && !wasRaw) {\n try {\n stdin.setRawMode(false)\n } catch {\n // no-op\n }\n }\n resolve()\n }\n\n const timeoutId = setTimeout(cleanup, timeoutMs)\n\n const onData = (data: string) => {\n buffer += data\n\n if (!kittyReceived) {\n const match = buffer.match(TerminalCapabilityManager.KITTY_REGEX)\n if (match) {\n kittyReceived = true\n this.kittySupported = true\n }\n }\n\n if (!modifyOtherKeysReceived) {\n const match = buffer.match(\n TerminalCapabilityManager.MODIFY_OTHER_KEYS_REGEX,\n )\n if (match) {\n modifyOtherKeysReceived = true\n const level = Number.parseInt(match[1] ?? '0', 10)\n this.modifyOtherKeysSupported = level >= 2\n }\n }\n\n if (!bracketedPasteReceived) {\n const match = buffer.match(\n TerminalCapabilityManager.BRACKETED_PASTE_REGEX,\n )\n if (match) {\n bracketedPasteReceived = true\n this.bracketedPasteSupported = true\n }\n }\n\n if (!terminalNameReceived) {\n const match = buffer.match(\n TerminalCapabilityManager.TERMINAL_NAME_REGEX,\n )\n if (match) {\n terminalNameReceived = true\n this.terminalName = match[1]\n }\n }\n\n if (!osc11Received) {\n const match = buffer.match(TerminalCapabilityManager.OSC_11_REGEX)\n if (match) {\n osc11Received = true\n this.terminalBackgroundColor = this.parseColor(\n match[1] ?? '0',\n match[2] ?? '0',\n match[3] ?? '0',\n )\n }\n }\n\n if (!deviceAttributesReceived) {\n const match = buffer.match(\n TerminalCapabilityManager.DEVICE_ATTRIBUTES_REGEX,\n )\n if (match) {\n deviceAttributesReceived = true\n clearTimeout(timeoutId)\n cleanup()\n }\n }\n }\n\n stdin.on('data', onData)\n\n try {\n fs.writeSync(\n process.stdout.fd,\n TerminalCapabilityManager.KITTY_QUERY +\n TerminalCapabilityManager.OSC_11_QUERY +\n TerminalCapabilityManager.TERMINAL_NAME_QUERY +\n TerminalCapabilityManager.MODIFY_OTHER_KEYS_QUERY +\n TerminalCapabilityManager.BRACKETED_PASTE_QUERY +\n TerminalCapabilityManager.DEVICE_ATTRIBUTES_QUERY,\n )\n } catch (error) {\n debugLogger.warn('TERMINAL_CAPABILITY_QUERY_FAILED', { error })\n clearTimeout(timeoutId)\n cleanup()\n }\n })\n }\n\n enableSupportedModes(options?: {\n enableKitty?: boolean\n enableModifyOtherKeys?: boolean\n enableBracketedPaste?: boolean\n }): void {\n try {\n const allowKitty = options?.enableKitty !== false\n const allowModifyOtherKeys = options?.enableModifyOtherKeys !== false\n const allowBracketedPaste = options?.enableBracketedPaste !== false\n\n const shouldEnableKitty = allowKitty && this.kittySupported\n const shouldEnableModifyOtherKeys =\n !shouldEnableKitty &&\n allowModifyOtherKeys &&\n this.modifyOtherKeysSupported\n\n // Enable enhanced keyboard reporting. Prefer kitty when supported, otherwise fall back\n // to modifyOtherKeys. Enabling unsupported modes can break key decoding on some terminals.\n if (shouldEnableKitty) {\n enableKittyKeyboardProtocol()\n this.kittyEnabled = true\n } else {\n this.kittyEnabled = false\n }\n\n if (shouldEnableModifyOtherKeys) {\n enableModifyOtherKeys()\n this.modifyOtherKeysEnabled = true\n } else {\n this.modifyOtherKeysEnabled = false\n }\n\n // Always *attempt* to enable bracketed paste: unsupported terminals will ignore it.\n // Track \"enabled\" as \"supported+requested\" so other heuristics can fall back safely.\n if (allowBracketedPaste) {\n enableBracketedPasteMode()\n this.bracketedPasteEnabled = this.bracketedPasteSupported\n } else {\n this.bracketedPasteEnabled = false\n }\n } catch (error) {\n debugLogger.warn('TERMINAL_CAPABILITY_ENABLE_FAILED', { error })\n }\n }\n\n disableAllModes(): void {\n disableKittyKeyboardProtocol()\n disableModifyOtherKeys()\n disableBracketedPasteMode()\n this.kittyEnabled = false\n this.modifyOtherKeysEnabled = false\n this.bracketedPasteEnabled = false\n }\n\n getTerminalBackgroundColor(): TerminalBackgroundColor {\n return this.terminalBackgroundColor\n }\n\n getTerminalName(): string | undefined {\n return this.terminalName\n }\n\n isKittyProtocolEnabled(): boolean {\n return this.kittyEnabled\n }\n\n isKittyProtocolSupported(): boolean {\n return this.kittySupported\n }\n\n isBracketedPasteSupported(): boolean {\n return this.bracketedPasteSupported\n }\n\n isBracketedPasteEnabled(): boolean {\n return this.bracketedPasteEnabled\n }\n\n isModifyOtherKeysSupported(): boolean {\n return this.modifyOtherKeysSupported\n }\n\n isModifyOtherKeysEnabled(): boolean {\n return this.modifyOtherKeysEnabled\n }\n\n private parseColor(rHex: string, gHex: string, bHex: string): string {\n const parseComponent = (hex: string) => {\n const val = Number.parseInt(hex, 16)\n if (hex.length === 1) return (val / 15) * 255\n if (hex.length === 2) return val\n if (hex.length === 3) return (val / 4095) * 255\n if (hex.length === 4) return (val / 65535) * 255\n return val\n }\n\n const r = parseComponent(rHex)\n const g = parseComponent(gHex)\n const b = parseComponent(bHex)\n\n const toHex = (c: number) => Math.round(c).toString(16).padStart(2, '0')\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`\n }\n}\n\nexport const terminalCapabilityManager = TerminalCapabilityManager.getInstance()\n", "import { useStdin } from 'ink'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef } from 'react'\nimport ReactReconciler from 'react-reconciler'\nimport { debug as debugLogger } from '#core/utils/debugLogger'\nimport { terminalCapabilityManager } from '#ui-ink/utils/terminalCapabilityManager'\n\nexport const BACKSLASH_ENTER_TIMEOUT = 5\nexport const ESC_TIMEOUT = 50\nexport const PASTE_TIMEOUT = 30_000\nexport const FAST_RETURN_TIMEOUT = 30\n\nconst ESC = '\\x1b'\n\n// Character codes - use numeric comparison to survive minification\nconst BACKSPACE_CODE = 8 // \\x08 / \\b\nconst DEL_CODE = 127 // \\x7f\nconst UNIT_SEPARATOR_CODE = 31 // \\x1f (Ctrl+_)\nconst CTRL_Z_CODE = 26 // \\x1a (highest control char for Ctrl+letter)\n\nconst batchedUpdates: ((fn: () => void) => void) | null =\n typeof (ReactReconciler as any)?.batchedUpdates === 'function'\n ? ((ReactReconciler as any).batchedUpdates as (fn: () => void) => void)\n : typeof (ReactReconciler as any)?.default?.batchedUpdates === 'function'\n ? ((ReactReconciler as any).default.batchedUpdates as (\n fn: () => void,\n ) => void)\n : null\n\n// Some macOS terminals emit special characters for Option/Alt-modified keys instead of ESC-prefixed sequences.\n// Map a small set of common cases back into Meta+<key> so navigation shortcuts work consistently.\nconst MAC_ALT_KEY_CHARACTER_MAP: Record<string, string> = {\n '\\u222B': 'b', // \u222B -> Meta+b (prev word)\n '\\u0192': 'f', // \u0192 -> Meta+f (next word)\n '\\u00B5': 'm', // \u00B5 -> Meta+m (toggle model / misc)\n '\\u03BC': 'm', // \u03BC -> Meta+m (some terminals emit Greek mu)\n}\n\nconst KEY_INFO_MAP: Record<\n string,\n { name: string; shift?: boolean; ctrl?: boolean }\n> = {\n '[200~': { name: 'paste-start' },\n '[201~': { name: 'paste-end' },\n '[[A': { name: 'f1' },\n '[[B': { name: 'f2' },\n '[[C': { name: 'f3' },\n '[[D': { name: 'f4' },\n '[[E': { name: 'f5' },\n '[1~': { name: 'home' },\n '[2~': { name: 'insert' },\n '[3~': { name: 'delete' },\n '[4~': { name: 'end' },\n '[5~': { name: 'pageup' },\n '[6~': { name: 'pagedown' },\n '[7~': { name: 'home' },\n '[8~': { name: 'end' },\n '[11~': { name: 'f1' },\n '[12~': { name: 'f2' },\n '[13~': { name: 'f3' },\n '[14~': { name: 'f4' },\n '[15~': { name: 'f5' },\n '[17~': { name: 'f6' },\n '[18~': { name: 'f7' },\n '[19~': { name: 'f8' },\n '[20~': { name: 'f9' },\n '[21~': { name: 'f10' },\n '[23~': { name: 'f11' },\n '[24~': { name: 'f12' },\n '[A': { name: 'up' },\n '[B': { name: 'down' },\n '[C': { name: 'right' },\n '[D': { name: 'left' },\n '[E': { name: 'clear' },\n '[F': { name: 'end' },\n '[H': { name: 'home' },\n '[P': { name: 'f1' },\n '[Q': { name: 'f2' },\n '[R': { name: 'f3' },\n '[S': { name: 'f4' },\n OA: { name: 'up' },\n OB: { name: 'down' },\n OC: { name: 'right' },\n OD: { name: 'left' },\n OE: { name: 'clear' },\n OF: { name: 'end' },\n OH: { name: 'home' },\n OP: { name: 'f1' },\n OQ: { name: 'f2' },\n OR: { name: 'f3' },\n OS: { name: 'f4' },\n '[[5~': { name: 'pageup' },\n '[[6~': { name: 'pagedown' },\n '[9u': { name: 'tab' },\n '[13u': { name: 'return' },\n '[13$': { name: 'return', shift: true },\n '[13^': { name: 'return', ctrl: true },\n '[27u': { name: 'escape' },\n '[127u': { name: 'backspace' },\n '[57414u': { name: 'return' }, // Numpad Enter\n // Reverse tab / modified cursor keys used by some terminals\n '[Z': { name: 'tab', shift: true },\n '[a': { name: 'up', shift: true },\n '[b': { name: 'down', shift: true },\n '[c': { name: 'right', shift: true },\n '[d': { name: 'left', shift: true },\n '[e': { name: 'clear', shift: true },\n '[2$': { name: 'insert', shift: true },\n '[3$': { name: 'delete', shift: true },\n '[5$': { name: 'pageup', shift: true },\n '[6$': { name: 'pagedown', shift: true },\n '[7$': { name: 'home', shift: true },\n '[8$': { name: 'end', shift: true },\n Oa: { name: 'up', ctrl: true },\n Ob: { name: 'down', ctrl: true },\n Oc: { name: 'right', ctrl: true },\n Od: { name: 'left', ctrl: true },\n Oe: { name: 'clear', ctrl: true },\n '[2^': { name: 'insert', ctrl: true },\n '[3^': { name: 'delete', ctrl: true },\n '[5^': { name: 'pageup', ctrl: true },\n '[6^': { name: 'pagedown', ctrl: true },\n '[7^': { name: 'home', ctrl: true },\n '[8^': { name: 'end', ctrl: true },\n}\n\nexport type Key = {\n sequence: string\n name: string\n ctrl: boolean\n meta: boolean\n shift: boolean\n paste: boolean\n insertable: boolean\n upArrow?: boolean\n downArrow?: boolean\n leftArrow?: boolean\n rightArrow?: boolean\n return?: boolean\n tab?: boolean\n escape?: boolean\n backspace?: boolean\n delete?: boolean\n pageUp?: boolean\n pageDown?: boolean\n home?: boolean\n end?: boolean\n option?: boolean\n fn?: boolean\n}\n\ntype ParsedKey = {\n name: string\n ctrl: boolean\n meta: boolean\n shift: boolean\n paste: boolean\n insertable: boolean\n sequence: string\n}\n\ntype KeypressHandler = (\n input: string,\n key: Key,\n) => boolean | void | Promise<void>\ntype KeypressSubscribeOptions = { priority?: number }\n\nfunction bufferBackslashEnter(keypressHandler: (key: ParsedKey) => void) {\n const bufferer = (function* (): Generator<void, void, ParsedKey | null> {\n while (true) {\n const key = yield\n\n if (key == null) {\n continue\n } else if (key.sequence !== '\\\\') {\n keypressHandler(key)\n continue\n }\n\n const timeoutId = setTimeout(\n () => bufferer.next(null),\n BACKSLASH_ENTER_TIMEOUT,\n )\n const nextKey = yield\n clearTimeout(timeoutId)\n\n if (nextKey === null) {\n keypressHandler(key)\n } else if (nextKey.name === 'return') {\n keypressHandler({\n ...nextKey,\n shift: true,\n sequence: '\\r',\n })\n } else {\n keypressHandler(key)\n keypressHandler(nextKey)\n }\n }\n })()\n\n bufferer.next()\n\n return (key: ParsedKey) => bufferer.next(key)\n}\n\nfunction bufferFastReturn(keypressHandler: (key: ParsedKey) => void) {\n let lastKeyTime = 0\n return (key: ParsedKey) => {\n const now = Date.now()\n if (key.name === 'return' && now - lastKeyTime <= FAST_RETURN_TIMEOUT) {\n keypressHandler({\n ...key,\n name: '',\n sequence: '\\r',\n insertable: true,\n })\n } else {\n keypressHandler(key)\n }\n lastKeyTime = now\n }\n}\n\nfunction bufferPaste(keypressHandler: (key: ParsedKey) => void) {\n const bufferer = (function* (): Generator<void, void, ParsedKey | null> {\n while (true) {\n let key = yield\n\n if (key === null) {\n continue\n } else if (key.name !== 'paste-start') {\n keypressHandler(key)\n continue\n }\n\n let buffer = ''\n while (true) {\n const timeoutId = setTimeout(() => bufferer.next(null), PASTE_TIMEOUT)\n key = yield\n clearTimeout(timeoutId)\n\n if (key === null) {\n break\n }\n\n if (key.name === 'paste-end') {\n break\n }\n buffer += key.sequence\n }\n\n if (buffer.length > 0) {\n keypressHandler({\n name: '',\n ctrl: false,\n meta: false,\n shift: false,\n paste: true,\n insertable: true,\n sequence: buffer,\n })\n }\n }\n })()\n bufferer.next()\n\n return (key: ParsedKey) => bufferer.next(key)\n}\n\nfunction createDataListener(\n keypressHandler: (key: ParsedKey) => void,\n): (data: string) => void {\n const parser = emitKeys(keypressHandler)\n parser.next()\n\n let timeoutId: NodeJS.Timeout\n return (data: string) => {\n clearTimeout(timeoutId)\n\n // Fast-path: treat non-ESC multi-char chunks as a single \"insertable\" key.\n // This is critical for legacy terminals that don't support bracketed paste:\n // - Multi-line paste would otherwise arrive as a sequence of Return keys, causing accidental submits.\n // - IME commits and large pastes become dramatically cheaper (fewer renders).\n const hasEsc = data.includes(ESC)\n const hasDisallowedControlChars =\n // eslint-disable-next-line no-control-regex\n /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1a\\x1c-\\x1f\\x7f]/.test(data)\n\n const looksLikeEscapeContinuation =\n (data.startsWith('[') && /^\\[[0-9;]*[~^$uA-Za-z]$/.test(data)) ||\n (data.startsWith('O') && /^O[0-9]?[A-Za-z]$/.test(data))\n\n const canBulkInsert =\n data.length > 1 &&\n !hasEsc &&\n !hasDisallowedControlChars &&\n !looksLikeEscapeContinuation\n\n if (canBulkInsert) {\n // Flush any pending ESC prefix before injecting a bulk insert.\n parser.next('')\n parser.next(data)\n } else {\n for (const char of data) {\n parser.next(char)\n }\n }\n\n if (data.length !== 0) {\n timeoutId = setTimeout(() => parser.next(''), ESC_TIMEOUT)\n }\n }\n}\n\nfunction* emitKeys(\n keypressHandler: (key: ParsedKey) => void,\n): Generator<void, void, string> {\n while (true) {\n let ch = yield\n let sequence = ch\n let escaped = false\n\n let name = ''\n let ctrl = false\n let meta = false\n let shift = false\n let code = ''\n let insertable = false\n\n if (ch === ESC) {\n escaped = true\n ch = yield\n sequence += ch\n\n if (ch === ESC) {\n ch = yield\n sequence += ch\n }\n }\n\n if (escaped && (ch === 'O' || ch === '[' || ch === ']')) {\n code = ch\n let modifier = 0\n\n if (ch === ']') {\n let buffer = ''\n while (true) {\n const next = yield\n if (next === '' || next === '\\u0007') {\n break\n } else if (next === ESC) {\n const afterEsc = yield\n if (afterEsc === '' || afterEsc === '\\\\') {\n break\n }\n buffer += next + afterEsc\n continue\n }\n buffer += next\n }\n\n continue\n } else if (ch === 'O') {\n ch = yield\n sequence += ch\n\n if (ch >= '0' && ch <= '9') {\n modifier = Number.parseInt(ch, 10) - 1\n ch = yield\n sequence += ch\n }\n\n code += ch\n } else if (ch === '[') {\n ch = yield\n sequence += ch\n\n if (ch === '[') {\n code += ch\n ch = yield\n sequence += ch\n }\n\n const cmdStart = sequence.length - 1\n\n while (ch >= '0' && ch <= '9') {\n ch = yield\n sequence += ch\n }\n\n if (ch === ';') {\n ch = yield\n sequence += ch\n\n while (ch >= '0' && ch <= '9') {\n ch = yield\n sequence += ch\n }\n }\n\n const cmd = sequence.substring(cmdStart)\n let match: RegExpExecArray | null\n\n if ((match = /^(\\d+)(?:;(\\d+))?(?:;(\\d+))?([~^$u])$/.exec(cmd))) {\n if (\n // kitty keyboard protocol can include an event type as the 3rd param: 1=press, 2=repeat, 3=release.\n // Ignore release events to avoid double-triggering shortcuts.\n match[4] === 'u' &&\n match[3] === '3' &&\n match[1] !== '27'\n ) {\n continue\n }\n if (match[1] === '27' && match[3] && match[4] === '~') {\n // modifyOtherKeys format: CSI 27 ; modifier ; key ~\n // Treat as CSI u: key + 'u'\n code += match[3] + 'u'\n modifier = Number.parseInt(match[2] ?? '1', 10) - 1\n } else if (match[1] === '13' && match[2] && match[4] === '~') {\n // Some terminals encode modified Enter as CSI 13 ; <modifier> ~.\n // Normalize to CSI-u so downstream handlers see it as a Return key.\n code += match[1] + 'u'\n modifier = Number.parseInt(match[2], 10) - 1\n } else {\n code += match[1] + match[4]\n modifier = Number.parseInt(match[2] ?? '1', 10) - 1\n }\n } else if ((match = /^(\\d+)?(?:;(\\d+))?([A-Za-z])$/.exec(cmd))) {\n code += match[3]!\n modifier = Number.parseInt(match[2] ?? match[1] ?? '1', 10) - 1\n } else {\n code += cmd\n }\n }\n\n ctrl = Boolean(modifier & 4)\n meta = Boolean(modifier & 10)\n shift = Boolean(modifier & 1)\n\n const keyInfo = KEY_INFO_MAP[code]\n if (keyInfo) {\n name = keyInfo.name\n if (keyInfo.shift) shift = true\n if (keyInfo.ctrl) ctrl = true\n } else {\n name = 'undefined'\n if (\n code.startsWith('[') &&\n (code.endsWith('u') || code.endsWith('~')) &&\n /^\\[\\d+(?:u|~)$/.test(code)\n ) {\n const codeNumber = Number.parseInt(code.slice(1, -1), 10)\n if (Number.isFinite(codeNumber) && codeNumber > 0) {\n try {\n // CSI-u (kitty/modifyOtherKeys) can report printable keys as numeric codepoints.\n // Map codepoints back to characters so normal typing works when a terminal chooses\n // to encode unmodified keys using CSI-u.\n const ch = String.fromCodePoint(codeNumber)\n const isControl =\n // eslint-disable-next-line no-control-regex\n /[\\x00-\\x1f\\x7f]/.test(ch)\n\n if (!isControl) {\n // Match the behavior of the non-escape path: letters/digits set name, others\n // are insertable with an empty name.\n if (/^[A-Z]$/.test(ch)) {\n name = ch.toLowerCase()\n shift = true\n } else if (/^[a-z0-9]$/.test(ch)) {\n name = ch\n } else {\n name = ''\n }\n\n // If there are no modifiers, treat it as normal insertable input.\n // For Ctrl/Meta-modified codepoints, downstream handlers use `name`.\n if (!ctrl && !meta) {\n insertable = true\n sequence = ch\n }\n }\n } catch {\n // ignore\n }\n }\n }\n }\n } else if (ch === '\\r') {\n name = 'return'\n meta = escaped\n } else if (escaped && ch === '\\n') {\n // Some terminals encode Alt/Option+Enter as ESC + LF.\n // Treat it like Alt+Enter (Meta+Return) rather than Ctrl+J.\n name = 'return'\n meta = escaped\n } else if (ch === '\\t') {\n name = 'tab'\n meta = escaped\n } else if (ch === '\\b' || ch.charCodeAt(0) === DEL_CODE) {\n name = 'backspace'\n meta = escaped\n } else if (!escaped && ch.charCodeAt(0) === UNIT_SEPARATOR_CODE) {\n // Ctrl+_ (unit separator) is commonly used as an \"undo\" shortcut.\n // Treat it like other Ctrl+<key> combos so downstream handlers can bind it.\n name = '_'\n ctrl = true\n } else if (ch === ESC) {\n name = 'escape'\n meta = escaped\n } else if (ch === ' ') {\n name = 'space'\n meta = escaped\n insertable = true\n } else if (!escaped && ch.length === 1 && ch.charCodeAt(0) <= CTRL_Z_CODE) {\n name = String.fromCharCode(ch.charCodeAt(0) + 'a'.charCodeAt(0) - 1)\n ctrl = true\n } else if (/^[0-9A-Za-z]$/.exec(ch) !== null) {\n name = ch.toLowerCase()\n shift = /^[A-Z]$/.exec(ch) !== null\n meta = escaped\n insertable = true\n } else if (process.platform === 'darwin' && MAC_ALT_KEY_CHARACTER_MAP[ch]) {\n name = MAC_ALT_KEY_CHARACTER_MAP[ch]!\n meta = true\n } else if (sequence === `${ESC}${ESC}`) {\n name = 'escape'\n meta = true\n\n keypressHandler({\n name: 'escape',\n ctrl,\n meta,\n shift,\n paste: false,\n insertable: false,\n sequence: ESC,\n })\n } else if (escaped) {\n name = ch.length ? '' : 'escape'\n meta = true\n } else {\n insertable = true\n }\n\n if (sequence.length !== 0) {\n keypressHandler({\n name,\n ctrl,\n meta,\n shift,\n paste: false,\n insertable,\n sequence,\n })\n }\n }\n}\n\nfunction buildKey(parsed: ParsedKey): Key {\n const name = parsed.name\n const key: Key = {\n sequence: parsed.sequence,\n name,\n ctrl: parsed.ctrl,\n meta: parsed.meta,\n shift: parsed.shift,\n paste: parsed.paste,\n insertable: parsed.insertable,\n }\n\n key.upArrow = name === 'up'\n key.downArrow = name === 'down'\n key.leftArrow = name === 'left'\n key.rightArrow = name === 'right'\n key.return = name === 'return' || name === 'enter'\n key.tab = name === 'tab'\n key.escape = name === 'escape'\n key.backspace = name === 'backspace'\n key.delete = name === 'delete'\n key.pageUp = name === 'pageup'\n key.pageDown = name === 'pagedown'\n key.home = name === 'home'\n key.end = name === 'end'\n key.option = process.platform === 'darwin' ? parsed.meta : undefined\n key.fn = false\n\n return key\n}\n\nfunction keyToInput(parsed: ParsedKey): string {\n if (parsed.ctrl && parsed.name && parsed.name.length === 1) {\n return parsed.name\n }\n if (parsed.meta && parsed.name && parsed.name.length === 1) {\n return parsed.name\n }\n if (parsed.paste) {\n return parsed.sequence\n }\n if (parsed.insertable) {\n // For Meta/Alt-modified \"printable\" keys, many terminals send ESC + <char>.\n // Downstream keymaps (e.g. Meta+b / Meta+f word navigation) expect the raw character.\n if (parsed.meta && parsed.sequence.startsWith(ESC)) {\n return parsed.sequence.slice(1)\n }\n return parsed.sequence\n }\n return ''\n}\n\ninterface KeypressContextValue {\n subscribe: (\n handler: KeypressHandler,\n options?: KeypressSubscribeOptions,\n ) => void\n unsubscribe: (handler: KeypressHandler) => void\n}\n\nconst KeypressContext = React.createContext<KeypressContextValue | undefined>(\n undefined,\n)\n\nexport function useKeypressContext() {\n const context = React.useContext(KeypressContext)\n if (!context) {\n throw new Error('useKeypressContext must be used within KeypressProvider')\n }\n return context\n}\n\nexport function KeypressProvider({\n children,\n debugKeystrokeLogging,\n}: {\n children: React.ReactNode\n debugKeystrokeLogging?: boolean\n}) {\n const { stdin, setRawMode } = useStdin()\n\n type Subscription = {\n handler: KeypressHandler\n priority: number\n order: number\n }\n\n const subscriptionsRef = useRef<Map<KeypressHandler, Subscription>>(new Map())\n const orderedSubscriptionsRef = useRef<Subscription[]>([])\n const nextOrderRef = useRef(0)\n\n const rebuildOrderedSubscriptions = useCallback(() => {\n orderedSubscriptionsRef.current = [\n ...subscriptionsRef.current.values(),\n ].sort((a, b) => b.priority - a.priority || b.order - a.order)\n }, [])\n\n const subscribe = useCallback(\n (handler: KeypressHandler, options?: KeypressSubscribeOptions) => {\n if (subscriptionsRef.current.has(handler)) {\n // Defensive: if a handler re-subscribes, update its priority.\n const current = subscriptionsRef.current.get(handler)\n if (current) {\n current.priority = options?.priority ?? current.priority\n subscriptionsRef.current.set(handler, current)\n rebuildOrderedSubscriptions()\n }\n return\n }\n\n const subscription: Subscription = {\n handler,\n priority: options?.priority ?? 0,\n order: nextOrderRef.current++,\n }\n subscriptionsRef.current.set(handler, subscription)\n rebuildOrderedSubscriptions()\n },\n [rebuildOrderedSubscriptions],\n )\n\n const unsubscribe = useCallback(\n (handler: KeypressHandler) => {\n const didDelete = subscriptionsRef.current.delete(handler)\n if (didDelete) {\n rebuildOrderedSubscriptions()\n }\n },\n [rebuildOrderedSubscriptions],\n )\n\n const broadcast = useCallback((parsed: ParsedKey) => {\n const key = buildKey(parsed)\n const input = keyToInput(parsed)\n\n // Batch all updates triggered by key handlers into a single Ink render pass.\n // This matches Ink's `useInput` behavior and reduces intermediate-frame flicker.\n if (!batchedUpdates) {\n for (const subscription of orderedSubscriptionsRef.current) {\n const handled = subscription.handler(input, key)\n if (\n handled &&\n typeof (handled as Promise<void>).catch === 'function'\n ) {\n ;(handled as Promise<void>).catch(error => {\n debugLogger.warn('KEYPRESS_HANDLER_PROMISE_REJECTED', {\n error: error instanceof Error ? error.message : String(error),\n })\n })\n }\n if (handled === true) {\n break\n }\n }\n return\n }\n\n batchedUpdates(() => {\n for (const subscription of orderedSubscriptionsRef.current) {\n const handled = subscription.handler(input, key)\n if (\n handled &&\n typeof (handled as Promise<void>).catch === 'function'\n ) {\n ;(handled as Promise<void>).catch(error => {\n debugLogger.warn('KEYPRESS_HANDLER_PROMISE_REJECTED', {\n error: error instanceof Error ? error.message : String(error),\n })\n })\n }\n if (handled === true) {\n break\n }\n }\n })\n }, [])\n\n useEffect(() => {\n const wasRaw = (stdin as unknown as { isRaw?: boolean } | null)?.isRaw\n const shouldEnableRaw =\n stdin.isTTY === true && (wasRaw === false || wasRaw === undefined)\n if (shouldEnableRaw) {\n try {\n setRawMode(true)\n } catch (error) {\n debugLogger.warn('KEYPRESS_RAWMODE_ENABLE_FAILED', {\n error: error instanceof Error ? error.message : String(error),\n })\n }\n }\n\n try {\n ;(stdin as unknown as { setEncoding?: (encoding: string) => void }).setEncoding?.(\n 'utf8',\n )\n } catch (error) {\n debugLogger.warn('KEYPRESS_SET_ENCODING_FAILED', {\n error: error instanceof Error ? error.message : String(error),\n })\n }\n\n let processor = broadcast\n if (!terminalCapabilityManager.isBracketedPasteEnabled()) {\n processor = bufferFastReturn(processor)\n }\n processor = bufferBackslashEnter(processor)\n processor = bufferPaste(processor)\n\n let dataListener = createDataListener(processor)\n\n if (debugKeystrokeLogging) {\n const old = dataListener\n dataListener = (data: string) => {\n if (data.length > 0) {\n debugLogger.ui('KEYPRESS_RAW', { data })\n }\n old(data)\n }\n }\n\n stdin.on('data', dataListener)\n return () => {\n stdin.removeListener('data', dataListener)\n if (shouldEnableRaw) {\n try {\n setRawMode(false)\n } catch {\n // best-effort only\n }\n }\n }\n }, [stdin, setRawMode, debugKeystrokeLogging, broadcast])\n\n return (\n <KeypressContext.Provider value={{ subscribe, unsubscribe }}>\n {children}\n </KeypressContext.Provider>\n )\n}\n", "import { useCallback, useEffect, useRef } from 'react'\nimport type { Key } from '#ui-ink/contexts/KeypressContext'\nimport { useKeypressContext } from '#ui-ink/contexts/KeypressContext'\n\nexport type { Key }\n\nexport function useKeypress(\n onKeypress: (input: string, key: Key) => boolean | void | Promise<void>,\n { isActive, priority }: { isActive?: boolean; priority?: number } = {},\n): void {\n const { subscribe, unsubscribe } = useKeypressContext()\n const active = isActive !== false\n\n const handlerRef = useRef(onKeypress)\n useEffect(() => {\n handlerRef.current = onKeypress\n }, [onKeypress])\n\n const stableHandler = useCallback((input: string, key: Key) => {\n return handlerRef.current(input, key)\n }, [])\n\n useEffect(() => {\n if (!active) return\n subscribe(stableHandler, { priority })\n return () => {\n unsubscribe(stableHandler)\n }\n }, [active, stableHandler, subscribe, unsubscribe])\n\n useEffect(() => {\n if (!active) return\n // Update priority without resubscribing.\n subscribe(stableHandler, { priority })\n }, [active, priority, stableHandler, subscribe])\n}\n"],
5
- "mappings": "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",
6
- "names": ["ch", "useCallback", "useEffect", "useRef", "useRef", "useEffect", "useCallback"]
7
- }