claude-code-tools 0.2.0__py3-none-any.whl → 1.4.1__py3-none-any.whl

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 (1805) hide show
  1. claude_code_tools/__init__.py +1 -1
  2. claude_code_tools/action_rpc.py +407 -0
  3. claude_code_tools/aichat.py +2460 -0
  4. claude_code_tools/claude_continue.py +299 -0
  5. claude_code_tools/codex_continue.py +309 -0
  6. claude_code_tools/config.py +93 -0
  7. claude_code_tools/delete_session.py +194 -0
  8. claude_code_tools/export_all.py +342 -0
  9. claude_code_tools/export_claude_session.py +481 -0
  10. claude_code_tools/export_codex_session.py +466 -0
  11. claude_code_tools/export_session.py +577 -0
  12. claude_code_tools/find_claude_session.py +1280 -118
  13. claude_code_tools/find_codex_session.py +946 -79
  14. claude_code_tools/find_original_session.py +134 -0
  15. claude_code_tools/find_session.py +1088 -0
  16. claude_code_tools/find_trimmed_sessions.py +259 -0
  17. claude_code_tools/gdoc2md.py +220 -0
  18. claude_code_tools/md2gdoc.py +549 -0
  19. claude_code_tools/node_menu_ui.py +406 -0
  20. claude_code_tools/search_index.py +1321 -0
  21. claude_code_tools/session_lineage.py +260 -0
  22. claude_code_tools/session_menu.py +187 -0
  23. claude_code_tools/session_menu_cli.py +448 -0
  24. claude_code_tools/session_utils.py +1313 -0
  25. claude_code_tools/smart_trim.py +424 -0
  26. claude_code_tools/smart_trim_core.py +616 -0
  27. claude_code_tools/tmux_cli_controller.py +55 -36
  28. claude_code_tools/trim_session.py +817 -0
  29. claude_code_tools/trim_session_claude.py +319 -0
  30. claude_code_tools/trim_session_codex.py +344 -0
  31. claude_code_tools-1.4.1.dist-info/METADATA +1113 -0
  32. claude_code_tools-1.4.1.dist-info/RECORD +1813 -0
  33. {claude_code_tools-0.2.0.dist-info → claude_code_tools-1.4.1.dist-info}/WHEEL +1 -1
  34. {claude_code_tools-0.2.0.dist-info → claude_code_tools-1.4.1.dist-info}/entry_points.txt +3 -2
  35. docs/lmsh.md +27 -5
  36. docs/local-llm-setup.md +286 -0
  37. docs/reddit-aichat-resume-v2.md +80 -0
  38. docs/reddit-aichat-resume.md +29 -0
  39. docs/reddit-aichat.md +79 -0
  40. docs/rollover-details.md +67 -0
  41. node_ui/action_config.js +72 -0
  42. node_ui/menu.js +2321 -0
  43. node_ui/node_modules/.bin/is-in-ci +5 -0
  44. node_ui/node_modules/.bin/loose-envify +16 -0
  45. node_ui/node_modules/.package-lock.json +714 -0
  46. node_ui/node_modules/@alcalzone/ansi-tokenize/README.md +248 -0
  47. node_ui/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.d.ts +11 -0
  48. node_ui/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js +41 -0
  49. node_ui/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js.map +1 -0
  50. node_ui/node_modules/@alcalzone/ansi-tokenize/build/diff.d.ts +6 -0
  51. node_ui/node_modules/@alcalzone/ansi-tokenize/build/diff.js +17 -0
  52. node_ui/node_modules/@alcalzone/ansi-tokenize/build/diff.js.map +1 -0
  53. node_ui/node_modules/@alcalzone/ansi-tokenize/build/index.d.ts +6 -0
  54. node_ui/node_modules/@alcalzone/ansi-tokenize/build/index.js +7 -0
  55. node_ui/node_modules/@alcalzone/ansi-tokenize/build/index.js.map +1 -0
  56. node_ui/node_modules/@alcalzone/ansi-tokenize/build/reduce.d.ts +5 -0
  57. node_ui/node_modules/@alcalzone/ansi-tokenize/build/reduce.js +27 -0
  58. node_ui/node_modules/@alcalzone/ansi-tokenize/build/reduce.js.map +1 -0
  59. node_ui/node_modules/@alcalzone/ansi-tokenize/build/styledChars.d.ts +6 -0
  60. node_ui/node_modules/@alcalzone/ansi-tokenize/build/styledChars.js +38 -0
  61. node_ui/node_modules/@alcalzone/ansi-tokenize/build/styledChars.js.map +1 -0
  62. node_ui/node_modules/@alcalzone/ansi-tokenize/build/tokenize.d.ts +12 -0
  63. node_ui/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js +70 -0
  64. node_ui/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js.map +1 -0
  65. node_ui/node_modules/@alcalzone/ansi-tokenize/build/undo.d.ts +3 -0
  66. node_ui/node_modules/@alcalzone/ansi-tokenize/build/undo.js +11 -0
  67. node_ui/node_modules/@alcalzone/ansi-tokenize/build/undo.js.map +1 -0
  68. node_ui/node_modules/@alcalzone/ansi-tokenize/package.json +63 -0
  69. node_ui/node_modules/ansi-escapes/base.d.ts +292 -0
  70. node_ui/node_modules/ansi-escapes/base.js +198 -0
  71. node_ui/node_modules/ansi-escapes/index.d.ts +2 -0
  72. node_ui/node_modules/ansi-escapes/index.js +2 -0
  73. node_ui/node_modules/ansi-escapes/license +9 -0
  74. node_ui/node_modules/ansi-escapes/package.json +70 -0
  75. node_ui/node_modules/ansi-escapes/readme.md +284 -0
  76. node_ui/node_modules/ansi-regex/index.d.ts +33 -0
  77. node_ui/node_modules/ansi-regex/index.js +14 -0
  78. node_ui/node_modules/ansi-regex/license +9 -0
  79. node_ui/node_modules/ansi-regex/package.json +61 -0
  80. node_ui/node_modules/ansi-regex/readme.md +66 -0
  81. node_ui/node_modules/ansi-styles/index.d.ts +236 -0
  82. node_ui/node_modules/ansi-styles/index.js +223 -0
  83. node_ui/node_modules/ansi-styles/license +9 -0
  84. node_ui/node_modules/ansi-styles/package.json +54 -0
  85. node_ui/node_modules/ansi-styles/readme.md +173 -0
  86. node_ui/node_modules/auto-bind/index.d.ts +50 -0
  87. node_ui/node_modules/auto-bind/index.js +41 -0
  88. node_ui/node_modules/auto-bind/license +9 -0
  89. node_ui/node_modules/auto-bind/package.json +51 -0
  90. node_ui/node_modules/auto-bind/react.d.ts +26 -0
  91. node_ui/node_modules/auto-bind/react.js +28 -0
  92. node_ui/node_modules/auto-bind/readme.md +92 -0
  93. node_ui/node_modules/chalk/license +9 -0
  94. node_ui/node_modules/chalk/package.json +83 -0
  95. node_ui/node_modules/chalk/readme.md +325 -0
  96. node_ui/node_modules/chalk/source/index.d.ts +320 -0
  97. node_ui/node_modules/chalk/source/index.js +225 -0
  98. node_ui/node_modules/chalk/source/utilities.js +33 -0
  99. node_ui/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
  100. node_ui/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
  101. node_ui/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
  102. node_ui/node_modules/chalk/source/vendor/supports-color/browser.js +30 -0
  103. node_ui/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
  104. node_ui/node_modules/chalk/source/vendor/supports-color/index.js +182 -0
  105. node_ui/node_modules/cli-boxes/boxes.json +82 -0
  106. node_ui/node_modules/cli-boxes/index.d.ts +127 -0
  107. node_ui/node_modules/cli-boxes/index.js +6 -0
  108. node_ui/node_modules/cli-boxes/license +9 -0
  109. node_ui/node_modules/cli-boxes/package.json +42 -0
  110. node_ui/node_modules/cli-boxes/readme.md +115 -0
  111. node_ui/node_modules/cli-cursor/index.d.ts +47 -0
  112. node_ui/node_modules/cli-cursor/index.js +39 -0
  113. node_ui/node_modules/cli-cursor/license +9 -0
  114. node_ui/node_modules/cli-cursor/package.json +49 -0
  115. node_ui/node_modules/cli-cursor/readme.md +51 -0
  116. node_ui/node_modules/cli-truncate/index.d.ts +116 -0
  117. node_ui/node_modules/cli-truncate/index.js +99 -0
  118. node_ui/node_modules/cli-truncate/license +9 -0
  119. node_ui/node_modules/cli-truncate/node_modules/slice-ansi/index.js +105 -0
  120. node_ui/node_modules/cli-truncate/node_modules/slice-ansi/license +10 -0
  121. node_ui/node_modules/cli-truncate/node_modules/slice-ansi/package.json +53 -0
  122. node_ui/node_modules/cli-truncate/node_modules/slice-ansi/readme.md +66 -0
  123. node_ui/node_modules/cli-truncate/package.json +51 -0
  124. node_ui/node_modules/cli-truncate/readme.md +150 -0
  125. node_ui/node_modules/code-excerpt/dist/index.d.ts +9 -0
  126. node_ui/node_modules/code-excerpt/dist/index.js +27 -0
  127. node_ui/node_modules/code-excerpt/license +21 -0
  128. node_ui/node_modules/code-excerpt/package.json +43 -0
  129. node_ui/node_modules/code-excerpt/readme.md +65 -0
  130. node_ui/node_modules/convert-to-spaces/dist/index.d.ts +2 -0
  131. node_ui/node_modules/convert-to-spaces/dist/index.js +4 -0
  132. node_ui/node_modules/convert-to-spaces/license +21 -0
  133. node_ui/node_modules/convert-to-spaces/package.json +40 -0
  134. node_ui/node_modules/convert-to-spaces/readme.md +39 -0
  135. node_ui/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  136. node_ui/node_modules/emoji-regex/README.md +107 -0
  137. node_ui/node_modules/emoji-regex/index.d.ts +3 -0
  138. node_ui/node_modules/emoji-regex/index.js +4 -0
  139. node_ui/node_modules/emoji-regex/index.mjs +4 -0
  140. node_ui/node_modules/emoji-regex/package.json +45 -0
  141. node_ui/node_modules/environment/index.d.ts +74 -0
  142. node_ui/node_modules/environment/index.js +47 -0
  143. node_ui/node_modules/environment/license +9 -0
  144. node_ui/node_modules/environment/package.json +74 -0
  145. node_ui/node_modules/environment/readme.md +94 -0
  146. node_ui/node_modules/escape-string-regexp/index.d.ts +16 -0
  147. node_ui/node_modules/escape-string-regexp/index.js +11 -0
  148. node_ui/node_modules/escape-string-regexp/license +9 -0
  149. node_ui/node_modules/escape-string-regexp/package.json +40 -0
  150. node_ui/node_modules/escape-string-regexp/readme.md +34 -0
  151. node_ui/node_modules/figures/index.d.ts +269 -0
  152. node_ui/node_modules/figures/index.js +322 -0
  153. node_ui/node_modules/figures/license +9 -0
  154. node_ui/node_modules/figures/package.json +46 -0
  155. node_ui/node_modules/figures/readme.md +328 -0
  156. node_ui/node_modules/get-east-asian-width/index.d.ts +60 -0
  157. node_ui/node_modules/get-east-asian-width/index.js +30 -0
  158. node_ui/node_modules/get-east-asian-width/license +9 -0
  159. node_ui/node_modules/get-east-asian-width/lookup.js +403 -0
  160. node_ui/node_modules/get-east-asian-width/package.json +70 -0
  161. node_ui/node_modules/get-east-asian-width/readme.md +65 -0
  162. node_ui/node_modules/indent-string/index.d.ts +38 -0
  163. node_ui/node_modules/indent-string/index.js +38 -0
  164. node_ui/node_modules/indent-string/license +9 -0
  165. node_ui/node_modules/indent-string/package.json +40 -0
  166. node_ui/node_modules/indent-string/readme.md +73 -0
  167. node_ui/node_modules/ink/build/apply-styles.js +175 -0
  168. node_ui/node_modules/ink/build/build-layout.js +77 -0
  169. node_ui/node_modules/ink/build/calculate-wrapped-text.js +53 -0
  170. node_ui/node_modules/ink/build/colorize.d.ts +3 -0
  171. node_ui/node_modules/ink/build/colorize.js +48 -0
  172. node_ui/node_modules/ink/build/colorize.js.map +1 -0
  173. node_ui/node_modules/ink/build/components/App.d.ts +61 -0
  174. node_ui/node_modules/ink/build/components/App.js +286 -0
  175. node_ui/node_modules/ink/build/components/App.js.map +1 -0
  176. node_ui/node_modules/ink/build/components/AppContext.d.ts +12 -0
  177. node_ui/node_modules/ink/build/components/AppContext.js +11 -0
  178. node_ui/node_modules/ink/build/components/AppContext.js.map +1 -0
  179. node_ui/node_modules/ink/build/components/Box.d.ts +62 -0
  180. node_ui/node_modules/ink/build/components/Box.js +20 -0
  181. node_ui/node_modules/ink/build/components/Box.js.map +1 -0
  182. node_ui/node_modules/ink/build/components/Color.js +62 -0
  183. node_ui/node_modules/ink/build/components/ErrorOverview.d.ts +6 -0
  184. node_ui/node_modules/ink/build/components/ErrorOverview.js +79 -0
  185. node_ui/node_modules/ink/build/components/ErrorOverview.js.map +1 -0
  186. node_ui/node_modules/ink/build/components/FocusContext.d.ts +17 -0
  187. node_ui/node_modules/ink/build/components/FocusContext.js +17 -0
  188. node_ui/node_modules/ink/build/components/FocusContext.js.map +1 -0
  189. node_ui/node_modules/ink/build/components/Newline.d.ts +13 -0
  190. node_ui/node_modules/ink/build/components/Newline.js +8 -0
  191. node_ui/node_modules/ink/build/components/Newline.js.map +1 -0
  192. node_ui/node_modules/ink/build/components/Spacer.d.ts +6 -0
  193. node_ui/node_modules/ink/build/components/Spacer.js +10 -0
  194. node_ui/node_modules/ink/build/components/Spacer.js.map +1 -0
  195. node_ui/node_modules/ink/build/components/Static.d.ts +31 -0
  196. node_ui/node_modules/ink/build/components/Static.js +33 -0
  197. node_ui/node_modules/ink/build/components/Static.js.map +1 -0
  198. node_ui/node_modules/ink/build/components/StderrContext.d.ts +19 -0
  199. node_ui/node_modules/ink/build/components/StderrContext.js +13 -0
  200. node_ui/node_modules/ink/build/components/StderrContext.js.map +1 -0
  201. node_ui/node_modules/ink/build/components/StdinContext.d.ts +26 -0
  202. node_ui/node_modules/ink/build/components/StdinContext.js +19 -0
  203. node_ui/node_modules/ink/build/components/StdinContext.js.map +1 -0
  204. node_ui/node_modules/ink/build/components/StdoutContext.d.ts +19 -0
  205. node_ui/node_modules/ink/build/components/StdoutContext.js +13 -0
  206. node_ui/node_modules/ink/build/components/StdoutContext.js.map +1 -0
  207. node_ui/node_modules/ink/build/components/Text.d.ts +49 -0
  208. node_ui/node_modules/ink/build/components/Text.js +40 -0
  209. node_ui/node_modules/ink/build/components/Text.js.map +1 -0
  210. node_ui/node_modules/ink/build/components/Transform.d.ts +15 -0
  211. node_ui/node_modules/ink/build/components/Transform.js +14 -0
  212. node_ui/node_modules/ink/build/components/Transform.js.map +1 -0
  213. node_ui/node_modules/ink/build/devtools-window-polyfill.d.ts +1 -0
  214. node_ui/node_modules/ink/build/devtools-window-polyfill.js +64 -0
  215. node_ui/node_modules/ink/build/devtools-window-polyfill.js.map +1 -0
  216. node_ui/node_modules/ink/build/devtools.d.ts +1 -0
  217. node_ui/node_modules/ink/build/devtools.js +9 -0
  218. node_ui/node_modules/ink/build/devtools.js.map +1 -0
  219. node_ui/node_modules/ink/build/dom.d.ts +42 -0
  220. node_ui/node_modules/ink/build/dom.js +117 -0
  221. node_ui/node_modules/ink/build/dom.js.map +1 -0
  222. node_ui/node_modules/ink/build/experimental/apply-style.js +140 -0
  223. node_ui/node_modules/ink/build/experimental/dom.js +123 -0
  224. node_ui/node_modules/ink/build/experimental/output.js +91 -0
  225. node_ui/node_modules/ink/build/experimental/reconciler.js +141 -0
  226. node_ui/node_modules/ink/build/experimental/renderer.js +81 -0
  227. node_ui/node_modules/ink/build/get-max-width.d.ts +3 -0
  228. node_ui/node_modules/ink/build/get-max-width.js +10 -0
  229. node_ui/node_modules/ink/build/get-max-width.js.map +1 -0
  230. node_ui/node_modules/ink/build/hooks/use-app.d.ts +5 -0
  231. node_ui/node_modules/ink/build/hooks/use-app.js +8 -0
  232. node_ui/node_modules/ink/build/hooks/use-app.js.map +1 -0
  233. node_ui/node_modules/ink/build/hooks/use-focus-manager.d.ts +34 -0
  234. node_ui/node_modules/ink/build/hooks/use-focus-manager.js +18 -0
  235. node_ui/node_modules/ink/build/hooks/use-focus-manager.js.map +1 -0
  236. node_ui/node_modules/ink/build/hooks/use-focus.d.ts +34 -0
  237. node_ui/node_modules/ink/build/hooks/use-focus.js +47 -0
  238. node_ui/node_modules/ink/build/hooks/use-focus.js.map +1 -0
  239. node_ui/node_modules/ink/build/hooks/use-input.d.ts +97 -0
  240. node_ui/node_modules/ink/build/hooks/use-input.js +96 -0
  241. node_ui/node_modules/ink/build/hooks/use-input.js.map +1 -0
  242. node_ui/node_modules/ink/build/hooks/use-stderr.d.ts +5 -0
  243. node_ui/node_modules/ink/build/hooks/use-stderr.js +8 -0
  244. node_ui/node_modules/ink/build/hooks/use-stderr.js.map +1 -0
  245. node_ui/node_modules/ink/build/hooks/use-stdin.d.ts +5 -0
  246. node_ui/node_modules/ink/build/hooks/use-stdin.js +8 -0
  247. node_ui/node_modules/ink/build/hooks/use-stdin.js.map +1 -0
  248. node_ui/node_modules/ink/build/hooks/use-stdout.d.ts +5 -0
  249. node_ui/node_modules/ink/build/hooks/use-stdout.js +8 -0
  250. node_ui/node_modules/ink/build/hooks/use-stdout.js.map +1 -0
  251. node_ui/node_modules/ink/build/hooks/useInput.js +38 -0
  252. node_ui/node_modules/ink/build/index.d.ts +27 -0
  253. node_ui/node_modules/ink/build/index.js +16 -0
  254. node_ui/node_modules/ink/build/index.js.map +1 -0
  255. node_ui/node_modules/ink/build/ink.d.ts +38 -0
  256. node_ui/node_modules/ink/build/ink.js +235 -0
  257. node_ui/node_modules/ink/build/ink.js.map +1 -0
  258. node_ui/node_modules/ink/build/instance.js +205 -0
  259. node_ui/node_modules/ink/build/instances.d.ts +4 -0
  260. node_ui/node_modules/ink/build/instances.js +8 -0
  261. node_ui/node_modules/ink/build/instances.js.map +1 -0
  262. node_ui/node_modules/ink/build/log-update.d.ts +13 -0
  263. node_ui/node_modules/ink/build/log-update.js +37 -0
  264. node_ui/node_modules/ink/build/log-update.js.map +1 -0
  265. node_ui/node_modules/ink/build/measure-element.d.ts +16 -0
  266. node_ui/node_modules/ink/build/measure-element.js +9 -0
  267. node_ui/node_modules/ink/build/measure-element.js.map +1 -0
  268. node_ui/node_modules/ink/build/measure-text.d.ts +6 -0
  269. node_ui/node_modules/ink/build/measure-text.js +20 -0
  270. node_ui/node_modules/ink/build/measure-text.js.map +1 -0
  271. node_ui/node_modules/ink/build/output.d.ts +35 -0
  272. node_ui/node_modules/ink/build/output.js +148 -0
  273. node_ui/node_modules/ink/build/output.js.map +1 -0
  274. node_ui/node_modules/ink/build/parse-keypress.d.ts +15 -0
  275. node_ui/node_modules/ink/build/parse-keypress.js +225 -0
  276. node_ui/node_modules/ink/build/parse-keypress.js.map +1 -0
  277. node_ui/node_modules/ink/build/reconciler.d.ts +4 -0
  278. node_ui/node_modules/ink/build/reconciler.js +219 -0
  279. node_ui/node_modules/ink/build/reconciler.js.map +1 -0
  280. node_ui/node_modules/ink/build/render-border.d.ts +4 -0
  281. node_ui/node_modules/ink/build/render-border.js +73 -0
  282. node_ui/node_modules/ink/build/render-border.js.map +1 -0
  283. node_ui/node_modules/ink/build/render-node-to-output.d.ts +10 -0
  284. node_ui/node_modules/ink/build/render-node-to-output.js +99 -0
  285. node_ui/node_modules/ink/build/render-node-to-output.js.map +1 -0
  286. node_ui/node_modules/ink/build/render.d.ts +68 -0
  287. node_ui/node_modules/ink/build/render.js +48 -0
  288. node_ui/node_modules/ink/build/render.js.map +1 -0
  289. node_ui/node_modules/ink/build/renderer.d.ts +8 -0
  290. node_ui/node_modules/ink/build/renderer.js +36 -0
  291. node_ui/node_modules/ink/build/renderer.js.map +1 -0
  292. node_ui/node_modules/ink/build/squash-text-nodes.d.ts +3 -0
  293. node_ui/node_modules/ink/build/squash-text-nodes.js +35 -0
  294. node_ui/node_modules/ink/build/squash-text-nodes.js.map +1 -0
  295. node_ui/node_modules/ink/build/styles.d.ts +243 -0
  296. node_ui/node_modules/ink/build/styles.js +229 -0
  297. node_ui/node_modules/ink/build/styles.js.map +1 -0
  298. node_ui/node_modules/ink/build/wrap-text.d.ts +3 -0
  299. node_ui/node_modules/ink/build/wrap-text.js +31 -0
  300. node_ui/node_modules/ink/build/wrap-text.js.map +1 -0
  301. node_ui/node_modules/ink/license +9 -0
  302. node_ui/node_modules/ink/package.json +197 -0
  303. node_ui/node_modules/ink/readme.md +2153 -0
  304. node_ui/node_modules/ink-select-input/build/Indicator.d.ts +6 -0
  305. node_ui/node_modules/ink-select-input/build/Indicator.js +8 -0
  306. node_ui/node_modules/ink-select-input/build/Indicator.js.map +1 -0
  307. node_ui/node_modules/ink-select-input/build/Item.d.ts +7 -0
  308. node_ui/node_modules/ink-select-input/build/Item.js +7 -0
  309. node_ui/node_modules/ink-select-input/build/Item.js.map +1 -0
  310. node_ui/node_modules/ink-select-input/build/SelectInput.d.ts +49 -0
  311. node_ui/node_modules/ink-select-input/build/SelectInput.js +83 -0
  312. node_ui/node_modules/ink-select-input/build/SelectInput.js.map +1 -0
  313. node_ui/node_modules/ink-select-input/build/index.d.ts +3 -0
  314. node_ui/node_modules/ink-select-input/build/index.js +4 -0
  315. node_ui/node_modules/ink-select-input/build/index.js.map +1 -0
  316. node_ui/node_modules/ink-select-input/license +9 -0
  317. node_ui/node_modules/ink-select-input/node_modules/figures/index.d.ts +279 -0
  318. node_ui/node_modules/ink-select-input/node_modules/figures/index.js +292 -0
  319. node_ui/node_modules/ink-select-input/node_modules/figures/license +9 -0
  320. node_ui/node_modules/ink-select-input/node_modules/figures/package.json +49 -0
  321. node_ui/node_modules/ink-select-input/node_modules/figures/readme.md +337 -0
  322. node_ui/node_modules/ink-select-input/node_modules/is-unicode-supported/index.d.ts +12 -0
  323. node_ui/node_modules/ink-select-input/node_modules/is-unicode-supported/index.js +21 -0
  324. node_ui/node_modules/ink-select-input/node_modules/is-unicode-supported/license +9 -0
  325. node_ui/node_modules/ink-select-input/node_modules/is-unicode-supported/package.json +47 -0
  326. node_ui/node_modules/ink-select-input/node_modules/is-unicode-supported/readme.md +35 -0
  327. node_ui/node_modules/ink-select-input/package.json +83 -0
  328. node_ui/node_modules/ink-select-input/readme.md +98 -0
  329. node_ui/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  330. node_ui/node_modules/is-fullwidth-code-point/index.js +40 -0
  331. node_ui/node_modules/is-fullwidth-code-point/license +9 -0
  332. node_ui/node_modules/is-fullwidth-code-point/package.json +45 -0
  333. node_ui/node_modules/is-fullwidth-code-point/readme.md +43 -0
  334. node_ui/node_modules/is-in-ci/cli.js +5 -0
  335. node_ui/node_modules/is-in-ci/index.d.ts +15 -0
  336. node_ui/node_modules/is-in-ci/index.js +11 -0
  337. node_ui/node_modules/is-in-ci/license +9 -0
  338. node_ui/node_modules/is-in-ci/package.json +48 -0
  339. node_ui/node_modules/is-in-ci/readme.md +43 -0
  340. node_ui/node_modules/is-unicode-supported/index.d.ts +12 -0
  341. node_ui/node_modules/is-unicode-supported/index.js +17 -0
  342. node_ui/node_modules/is-unicode-supported/license +9 -0
  343. node_ui/node_modules/is-unicode-supported/package.json +43 -0
  344. node_ui/node_modules/is-unicode-supported/readme.md +35 -0
  345. node_ui/node_modules/js-tokens/CHANGELOG.md +151 -0
  346. node_ui/node_modules/js-tokens/LICENSE +21 -0
  347. node_ui/node_modules/js-tokens/README.md +240 -0
  348. node_ui/node_modules/js-tokens/index.js +23 -0
  349. node_ui/node_modules/js-tokens/package.json +30 -0
  350. node_ui/node_modules/lodash/LICENSE +47 -0
  351. node_ui/node_modules/lodash/README.md +39 -0
  352. node_ui/node_modules/lodash/_DataView.js +7 -0
  353. node_ui/node_modules/lodash/_Hash.js +32 -0
  354. node_ui/node_modules/lodash/_LazyWrapper.js +28 -0
  355. node_ui/node_modules/lodash/_ListCache.js +32 -0
  356. node_ui/node_modules/lodash/_LodashWrapper.js +22 -0
  357. node_ui/node_modules/lodash/_Map.js +7 -0
  358. node_ui/node_modules/lodash/_MapCache.js +32 -0
  359. node_ui/node_modules/lodash/_Promise.js +7 -0
  360. node_ui/node_modules/lodash/_Set.js +7 -0
  361. node_ui/node_modules/lodash/_SetCache.js +27 -0
  362. node_ui/node_modules/lodash/_Stack.js +27 -0
  363. node_ui/node_modules/lodash/_Symbol.js +6 -0
  364. node_ui/node_modules/lodash/_Uint8Array.js +6 -0
  365. node_ui/node_modules/lodash/_WeakMap.js +7 -0
  366. node_ui/node_modules/lodash/_apply.js +21 -0
  367. node_ui/node_modules/lodash/_arrayAggregator.js +22 -0
  368. node_ui/node_modules/lodash/_arrayEach.js +22 -0
  369. node_ui/node_modules/lodash/_arrayEachRight.js +21 -0
  370. node_ui/node_modules/lodash/_arrayEvery.js +23 -0
  371. node_ui/node_modules/lodash/_arrayFilter.js +25 -0
  372. node_ui/node_modules/lodash/_arrayIncludes.js +17 -0
  373. node_ui/node_modules/lodash/_arrayIncludesWith.js +22 -0
  374. node_ui/node_modules/lodash/_arrayLikeKeys.js +49 -0
  375. node_ui/node_modules/lodash/_arrayMap.js +21 -0
  376. node_ui/node_modules/lodash/_arrayPush.js +20 -0
  377. node_ui/node_modules/lodash/_arrayReduce.js +26 -0
  378. node_ui/node_modules/lodash/_arrayReduceRight.js +24 -0
  379. node_ui/node_modules/lodash/_arraySample.js +15 -0
  380. node_ui/node_modules/lodash/_arraySampleSize.js +17 -0
  381. node_ui/node_modules/lodash/_arrayShuffle.js +15 -0
  382. node_ui/node_modules/lodash/_arraySome.js +23 -0
  383. node_ui/node_modules/lodash/_asciiSize.js +12 -0
  384. node_ui/node_modules/lodash/_asciiToArray.js +12 -0
  385. node_ui/node_modules/lodash/_asciiWords.js +15 -0
  386. node_ui/node_modules/lodash/_assignMergeValue.js +20 -0
  387. node_ui/node_modules/lodash/_assignValue.js +28 -0
  388. node_ui/node_modules/lodash/_assocIndexOf.js +21 -0
  389. node_ui/node_modules/lodash/_baseAggregator.js +21 -0
  390. node_ui/node_modules/lodash/_baseAssign.js +17 -0
  391. node_ui/node_modules/lodash/_baseAssignIn.js +17 -0
  392. node_ui/node_modules/lodash/_baseAssignValue.js +25 -0
  393. node_ui/node_modules/lodash/_baseAt.js +23 -0
  394. node_ui/node_modules/lodash/_baseClamp.js +22 -0
  395. node_ui/node_modules/lodash/_baseClone.js +166 -0
  396. node_ui/node_modules/lodash/_baseConforms.js +18 -0
  397. node_ui/node_modules/lodash/_baseConformsTo.js +27 -0
  398. node_ui/node_modules/lodash/_baseCreate.js +30 -0
  399. node_ui/node_modules/lodash/_baseDelay.js +21 -0
  400. node_ui/node_modules/lodash/_baseDifference.js +67 -0
  401. node_ui/node_modules/lodash/_baseEach.js +14 -0
  402. node_ui/node_modules/lodash/_baseEachRight.js +14 -0
  403. node_ui/node_modules/lodash/_baseEvery.js +21 -0
  404. node_ui/node_modules/lodash/_baseExtremum.js +32 -0
  405. node_ui/node_modules/lodash/_baseFill.js +32 -0
  406. node_ui/node_modules/lodash/_baseFilter.js +21 -0
  407. node_ui/node_modules/lodash/_baseFindIndex.js +24 -0
  408. node_ui/node_modules/lodash/_baseFindKey.js +23 -0
  409. node_ui/node_modules/lodash/_baseFlatten.js +38 -0
  410. node_ui/node_modules/lodash/_baseFor.js +16 -0
  411. node_ui/node_modules/lodash/_baseForOwn.js +16 -0
  412. node_ui/node_modules/lodash/_baseForOwnRight.js +16 -0
  413. node_ui/node_modules/lodash/_baseForRight.js +15 -0
  414. node_ui/node_modules/lodash/_baseFunctions.js +19 -0
  415. node_ui/node_modules/lodash/_baseGet.js +24 -0
  416. node_ui/node_modules/lodash/_baseGetAllKeys.js +20 -0
  417. node_ui/node_modules/lodash/_baseGetTag.js +28 -0
  418. node_ui/node_modules/lodash/_baseGt.js +14 -0
  419. node_ui/node_modules/lodash/_baseHas.js +19 -0
  420. node_ui/node_modules/lodash/_baseHasIn.js +13 -0
  421. node_ui/node_modules/lodash/_baseInRange.js +18 -0
  422. node_ui/node_modules/lodash/_baseIndexOf.js +20 -0
  423. node_ui/node_modules/lodash/_baseIndexOfWith.js +23 -0
  424. node_ui/node_modules/lodash/_baseIntersection.js +74 -0
  425. node_ui/node_modules/lodash/_baseInverter.js +21 -0
  426. node_ui/node_modules/lodash/_baseInvoke.js +24 -0
  427. node_ui/node_modules/lodash/_baseIsArguments.js +18 -0
  428. node_ui/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
  429. node_ui/node_modules/lodash/_baseIsDate.js +18 -0
  430. node_ui/node_modules/lodash/_baseIsEqual.js +28 -0
  431. node_ui/node_modules/lodash/_baseIsEqualDeep.js +83 -0
  432. node_ui/node_modules/lodash/_baseIsMap.js +18 -0
  433. node_ui/node_modules/lodash/_baseIsMatch.js +62 -0
  434. node_ui/node_modules/lodash/_baseIsNaN.js +12 -0
  435. node_ui/node_modules/lodash/_baseIsNative.js +47 -0
  436. node_ui/node_modules/lodash/_baseIsRegExp.js +18 -0
  437. node_ui/node_modules/lodash/_baseIsSet.js +18 -0
  438. node_ui/node_modules/lodash/_baseIsTypedArray.js +60 -0
  439. node_ui/node_modules/lodash/_baseIteratee.js +31 -0
  440. node_ui/node_modules/lodash/_baseKeys.js +30 -0
  441. node_ui/node_modules/lodash/_baseKeysIn.js +33 -0
  442. node_ui/node_modules/lodash/_baseLodash.js +10 -0
  443. node_ui/node_modules/lodash/_baseLt.js +14 -0
  444. node_ui/node_modules/lodash/_baseMap.js +22 -0
  445. node_ui/node_modules/lodash/_baseMatches.js +22 -0
  446. node_ui/node_modules/lodash/_baseMatchesProperty.js +33 -0
  447. node_ui/node_modules/lodash/_baseMean.js +20 -0
  448. node_ui/node_modules/lodash/_baseMerge.js +42 -0
  449. node_ui/node_modules/lodash/_baseMergeDeep.js +94 -0
  450. node_ui/node_modules/lodash/_baseNth.js +20 -0
  451. node_ui/node_modules/lodash/_baseOrderBy.js +49 -0
  452. node_ui/node_modules/lodash/_basePick.js +19 -0
  453. node_ui/node_modules/lodash/_basePickBy.js +30 -0
  454. node_ui/node_modules/lodash/_baseProperty.js +14 -0
  455. node_ui/node_modules/lodash/_basePropertyDeep.js +16 -0
  456. node_ui/node_modules/lodash/_basePropertyOf.js +14 -0
  457. node_ui/node_modules/lodash/_basePullAll.js +51 -0
  458. node_ui/node_modules/lodash/_basePullAt.js +37 -0
  459. node_ui/node_modules/lodash/_baseRandom.js +18 -0
  460. node_ui/node_modules/lodash/_baseRange.js +28 -0
  461. node_ui/node_modules/lodash/_baseReduce.js +23 -0
  462. node_ui/node_modules/lodash/_baseRepeat.js +35 -0
  463. node_ui/node_modules/lodash/_baseRest.js +17 -0
  464. node_ui/node_modules/lodash/_baseSample.js +15 -0
  465. node_ui/node_modules/lodash/_baseSampleSize.js +18 -0
  466. node_ui/node_modules/lodash/_baseSet.js +51 -0
  467. node_ui/node_modules/lodash/_baseSetData.js +17 -0
  468. node_ui/node_modules/lodash/_baseSetToString.js +22 -0
  469. node_ui/node_modules/lodash/_baseShuffle.js +15 -0
  470. node_ui/node_modules/lodash/_baseSlice.js +31 -0
  471. node_ui/node_modules/lodash/_baseSome.js +22 -0
  472. node_ui/node_modules/lodash/_baseSortBy.js +21 -0
  473. node_ui/node_modules/lodash/_baseSortedIndex.js +42 -0
  474. node_ui/node_modules/lodash/_baseSortedIndexBy.js +67 -0
  475. node_ui/node_modules/lodash/_baseSortedUniq.js +30 -0
  476. node_ui/node_modules/lodash/_baseSum.js +24 -0
  477. node_ui/node_modules/lodash/_baseTimes.js +20 -0
  478. node_ui/node_modules/lodash/_baseToNumber.js +24 -0
  479. node_ui/node_modules/lodash/_baseToPairs.js +18 -0
  480. node_ui/node_modules/lodash/_baseToString.js +37 -0
  481. node_ui/node_modules/lodash/_baseTrim.js +19 -0
  482. node_ui/node_modules/lodash/_baseUnary.js +14 -0
  483. node_ui/node_modules/lodash/_baseUniq.js +72 -0
  484. node_ui/node_modules/lodash/_baseUnset.js +20 -0
  485. node_ui/node_modules/lodash/_baseUpdate.js +18 -0
  486. node_ui/node_modules/lodash/_baseValues.js +19 -0
  487. node_ui/node_modules/lodash/_baseWhile.js +26 -0
  488. node_ui/node_modules/lodash/_baseWrapperValue.js +25 -0
  489. node_ui/node_modules/lodash/_baseXor.js +36 -0
  490. node_ui/node_modules/lodash/_baseZipObject.js +23 -0
  491. node_ui/node_modules/lodash/_cacheHas.js +13 -0
  492. node_ui/node_modules/lodash/_castArrayLikeObject.js +14 -0
  493. node_ui/node_modules/lodash/_castFunction.js +14 -0
  494. node_ui/node_modules/lodash/_castPath.js +21 -0
  495. node_ui/node_modules/lodash/_castRest.js +14 -0
  496. node_ui/node_modules/lodash/_castSlice.js +18 -0
  497. node_ui/node_modules/lodash/_charsEndIndex.js +19 -0
  498. node_ui/node_modules/lodash/_charsStartIndex.js +20 -0
  499. node_ui/node_modules/lodash/_cloneArrayBuffer.js +16 -0
  500. node_ui/node_modules/lodash/_cloneBuffer.js +35 -0
  501. node_ui/node_modules/lodash/_cloneDataView.js +16 -0
  502. node_ui/node_modules/lodash/_cloneRegExp.js +17 -0
  503. node_ui/node_modules/lodash/_cloneSymbol.js +18 -0
  504. node_ui/node_modules/lodash/_cloneTypedArray.js +16 -0
  505. node_ui/node_modules/lodash/_compareAscending.js +41 -0
  506. node_ui/node_modules/lodash/_compareMultiple.js +44 -0
  507. node_ui/node_modules/lodash/_composeArgs.js +39 -0
  508. node_ui/node_modules/lodash/_composeArgsRight.js +41 -0
  509. node_ui/node_modules/lodash/_copyArray.js +20 -0
  510. node_ui/node_modules/lodash/_copyObject.js +40 -0
  511. node_ui/node_modules/lodash/_copySymbols.js +16 -0
  512. node_ui/node_modules/lodash/_copySymbolsIn.js +16 -0
  513. node_ui/node_modules/lodash/_coreJsData.js +6 -0
  514. node_ui/node_modules/lodash/_countHolders.js +21 -0
  515. node_ui/node_modules/lodash/_createAggregator.js +23 -0
  516. node_ui/node_modules/lodash/_createAssigner.js +37 -0
  517. node_ui/node_modules/lodash/_createBaseEach.js +32 -0
  518. node_ui/node_modules/lodash/_createBaseFor.js +25 -0
  519. node_ui/node_modules/lodash/_createBind.js +28 -0
  520. node_ui/node_modules/lodash/_createCaseFirst.js +33 -0
  521. node_ui/node_modules/lodash/_createCompounder.js +24 -0
  522. node_ui/node_modules/lodash/_createCtor.js +37 -0
  523. node_ui/node_modules/lodash/_createCurry.js +46 -0
  524. node_ui/node_modules/lodash/_createFind.js +25 -0
  525. node_ui/node_modules/lodash/_createFlow.js +78 -0
  526. node_ui/node_modules/lodash/_createHybrid.js +92 -0
  527. node_ui/node_modules/lodash/_createInverter.js +17 -0
  528. node_ui/node_modules/lodash/_createMathOperation.js +38 -0
  529. node_ui/node_modules/lodash/_createOver.js +27 -0
  530. node_ui/node_modules/lodash/_createPadding.js +33 -0
  531. node_ui/node_modules/lodash/_createPartial.js +43 -0
  532. node_ui/node_modules/lodash/_createRange.js +30 -0
  533. node_ui/node_modules/lodash/_createRecurry.js +56 -0
  534. node_ui/node_modules/lodash/_createRelationalOperation.js +20 -0
  535. node_ui/node_modules/lodash/_createRound.js +35 -0
  536. node_ui/node_modules/lodash/_createSet.js +19 -0
  537. node_ui/node_modules/lodash/_createToPairs.js +30 -0
  538. node_ui/node_modules/lodash/_createWrap.js +106 -0
  539. node_ui/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
  540. node_ui/node_modules/lodash/_customDefaultsMerge.js +28 -0
  541. node_ui/node_modules/lodash/_customOmitClone.js +16 -0
  542. node_ui/node_modules/lodash/_deburrLetter.js +71 -0
  543. node_ui/node_modules/lodash/_defineProperty.js +11 -0
  544. node_ui/node_modules/lodash/_equalArrays.js +84 -0
  545. node_ui/node_modules/lodash/_equalByTag.js +112 -0
  546. node_ui/node_modules/lodash/_equalObjects.js +90 -0
  547. node_ui/node_modules/lodash/_escapeHtmlChar.js +21 -0
  548. node_ui/node_modules/lodash/_escapeStringChar.js +22 -0
  549. node_ui/node_modules/lodash/_flatRest.js +16 -0
  550. node_ui/node_modules/lodash/_freeGlobal.js +4 -0
  551. node_ui/node_modules/lodash/_getAllKeys.js +16 -0
  552. node_ui/node_modules/lodash/_getAllKeysIn.js +17 -0
  553. node_ui/node_modules/lodash/_getData.js +15 -0
  554. node_ui/node_modules/lodash/_getFuncName.js +31 -0
  555. node_ui/node_modules/lodash/_getHolder.js +13 -0
  556. node_ui/node_modules/lodash/_getMapData.js +18 -0
  557. node_ui/node_modules/lodash/_getMatchData.js +24 -0
  558. node_ui/node_modules/lodash/_getNative.js +17 -0
  559. node_ui/node_modules/lodash/_getPrototype.js +6 -0
  560. node_ui/node_modules/lodash/_getRawTag.js +46 -0
  561. node_ui/node_modules/lodash/_getSymbols.js +30 -0
  562. node_ui/node_modules/lodash/_getSymbolsIn.js +25 -0
  563. node_ui/node_modules/lodash/_getTag.js +58 -0
  564. node_ui/node_modules/lodash/_getValue.js +13 -0
  565. node_ui/node_modules/lodash/_getView.js +33 -0
  566. node_ui/node_modules/lodash/_getWrapDetails.js +17 -0
  567. node_ui/node_modules/lodash/_hasPath.js +39 -0
  568. node_ui/node_modules/lodash/_hasUnicode.js +26 -0
  569. node_ui/node_modules/lodash/_hasUnicodeWord.js +15 -0
  570. node_ui/node_modules/lodash/_hashClear.js +15 -0
  571. node_ui/node_modules/lodash/_hashDelete.js +17 -0
  572. node_ui/node_modules/lodash/_hashGet.js +30 -0
  573. node_ui/node_modules/lodash/_hashHas.js +23 -0
  574. node_ui/node_modules/lodash/_hashSet.js +23 -0
  575. node_ui/node_modules/lodash/_initCloneArray.js +26 -0
  576. node_ui/node_modules/lodash/_initCloneByTag.js +77 -0
  577. node_ui/node_modules/lodash/_initCloneObject.js +18 -0
  578. node_ui/node_modules/lodash/_insertWrapDetails.js +23 -0
  579. node_ui/node_modules/lodash/_isFlattenable.js +20 -0
  580. node_ui/node_modules/lodash/_isIndex.js +25 -0
  581. node_ui/node_modules/lodash/_isIterateeCall.js +30 -0
  582. node_ui/node_modules/lodash/_isKey.js +29 -0
  583. node_ui/node_modules/lodash/_isKeyable.js +15 -0
  584. node_ui/node_modules/lodash/_isLaziable.js +28 -0
  585. node_ui/node_modules/lodash/_isMaskable.js +14 -0
  586. node_ui/node_modules/lodash/_isMasked.js +20 -0
  587. node_ui/node_modules/lodash/_isPrototype.js +18 -0
  588. node_ui/node_modules/lodash/_isStrictComparable.js +15 -0
  589. node_ui/node_modules/lodash/_iteratorToArray.js +18 -0
  590. node_ui/node_modules/lodash/_lazyClone.js +23 -0
  591. node_ui/node_modules/lodash/_lazyReverse.js +23 -0
  592. node_ui/node_modules/lodash/_lazyValue.js +69 -0
  593. node_ui/node_modules/lodash/_listCacheClear.js +13 -0
  594. node_ui/node_modules/lodash/_listCacheDelete.js +35 -0
  595. node_ui/node_modules/lodash/_listCacheGet.js +19 -0
  596. node_ui/node_modules/lodash/_listCacheHas.js +16 -0
  597. node_ui/node_modules/lodash/_listCacheSet.js +26 -0
  598. node_ui/node_modules/lodash/_mapCacheClear.js +21 -0
  599. node_ui/node_modules/lodash/_mapCacheDelete.js +18 -0
  600. node_ui/node_modules/lodash/_mapCacheGet.js +16 -0
  601. node_ui/node_modules/lodash/_mapCacheHas.js +16 -0
  602. node_ui/node_modules/lodash/_mapCacheSet.js +22 -0
  603. node_ui/node_modules/lodash/_mapToArray.js +18 -0
  604. node_ui/node_modules/lodash/_matchesStrictComparable.js +20 -0
  605. node_ui/node_modules/lodash/_memoizeCapped.js +26 -0
  606. node_ui/node_modules/lodash/_mergeData.js +90 -0
  607. node_ui/node_modules/lodash/_metaMap.js +6 -0
  608. node_ui/node_modules/lodash/_nativeCreate.js +6 -0
  609. node_ui/node_modules/lodash/_nativeKeys.js +6 -0
  610. node_ui/node_modules/lodash/_nativeKeysIn.js +20 -0
  611. node_ui/node_modules/lodash/_nodeUtil.js +30 -0
  612. node_ui/node_modules/lodash/_objectToString.js +22 -0
  613. node_ui/node_modules/lodash/_overArg.js +15 -0
  614. node_ui/node_modules/lodash/_overRest.js +36 -0
  615. node_ui/node_modules/lodash/_parent.js +16 -0
  616. node_ui/node_modules/lodash/_reEscape.js +4 -0
  617. node_ui/node_modules/lodash/_reEvaluate.js +4 -0
  618. node_ui/node_modules/lodash/_reInterpolate.js +4 -0
  619. node_ui/node_modules/lodash/_realNames.js +4 -0
  620. node_ui/node_modules/lodash/_reorder.js +29 -0
  621. node_ui/node_modules/lodash/_replaceHolders.js +29 -0
  622. node_ui/node_modules/lodash/_root.js +9 -0
  623. node_ui/node_modules/lodash/_safeGet.js +21 -0
  624. node_ui/node_modules/lodash/_setCacheAdd.js +19 -0
  625. node_ui/node_modules/lodash/_setCacheHas.js +14 -0
  626. node_ui/node_modules/lodash/_setData.js +20 -0
  627. node_ui/node_modules/lodash/_setToArray.js +18 -0
  628. node_ui/node_modules/lodash/_setToPairs.js +18 -0
  629. node_ui/node_modules/lodash/_setToString.js +14 -0
  630. node_ui/node_modules/lodash/_setWrapToString.js +21 -0
  631. node_ui/node_modules/lodash/_shortOut.js +37 -0
  632. node_ui/node_modules/lodash/_shuffleSelf.js +28 -0
  633. node_ui/node_modules/lodash/_stackClear.js +15 -0
  634. node_ui/node_modules/lodash/_stackDelete.js +18 -0
  635. node_ui/node_modules/lodash/_stackGet.js +14 -0
  636. node_ui/node_modules/lodash/_stackHas.js +14 -0
  637. node_ui/node_modules/lodash/_stackSet.js +34 -0
  638. node_ui/node_modules/lodash/_strictIndexOf.js +23 -0
  639. node_ui/node_modules/lodash/_strictLastIndexOf.js +21 -0
  640. node_ui/node_modules/lodash/_stringSize.js +18 -0
  641. node_ui/node_modules/lodash/_stringToArray.js +18 -0
  642. node_ui/node_modules/lodash/_stringToPath.js +27 -0
  643. node_ui/node_modules/lodash/_toKey.js +21 -0
  644. node_ui/node_modules/lodash/_toSource.js +26 -0
  645. node_ui/node_modules/lodash/_trimmedEndIndex.js +19 -0
  646. node_ui/node_modules/lodash/_unescapeHtmlChar.js +21 -0
  647. node_ui/node_modules/lodash/_unicodeSize.js +44 -0
  648. node_ui/node_modules/lodash/_unicodeToArray.js +40 -0
  649. node_ui/node_modules/lodash/_unicodeWords.js +69 -0
  650. node_ui/node_modules/lodash/_updateWrapDetails.js +46 -0
  651. node_ui/node_modules/lodash/_wrapperClone.js +23 -0
  652. node_ui/node_modules/lodash/add.js +22 -0
  653. node_ui/node_modules/lodash/after.js +42 -0
  654. node_ui/node_modules/lodash/array.js +67 -0
  655. node_ui/node_modules/lodash/ary.js +29 -0
  656. node_ui/node_modules/lodash/assign.js +58 -0
  657. node_ui/node_modules/lodash/assignIn.js +40 -0
  658. node_ui/node_modules/lodash/assignInWith.js +38 -0
  659. node_ui/node_modules/lodash/assignWith.js +37 -0
  660. node_ui/node_modules/lodash/at.js +23 -0
  661. node_ui/node_modules/lodash/attempt.js +35 -0
  662. node_ui/node_modules/lodash/before.js +40 -0
  663. node_ui/node_modules/lodash/bind.js +57 -0
  664. node_ui/node_modules/lodash/bindAll.js +41 -0
  665. node_ui/node_modules/lodash/bindKey.js +68 -0
  666. node_ui/node_modules/lodash/camelCase.js +29 -0
  667. node_ui/node_modules/lodash/capitalize.js +23 -0
  668. node_ui/node_modules/lodash/castArray.js +44 -0
  669. node_ui/node_modules/lodash/ceil.js +26 -0
  670. node_ui/node_modules/lodash/chain.js +38 -0
  671. node_ui/node_modules/lodash/chunk.js +50 -0
  672. node_ui/node_modules/lodash/clamp.js +39 -0
  673. node_ui/node_modules/lodash/clone.js +36 -0
  674. node_ui/node_modules/lodash/cloneDeep.js +29 -0
  675. node_ui/node_modules/lodash/cloneDeepWith.js +40 -0
  676. node_ui/node_modules/lodash/cloneWith.js +42 -0
  677. node_ui/node_modules/lodash/collection.js +30 -0
  678. node_ui/node_modules/lodash/commit.js +33 -0
  679. node_ui/node_modules/lodash/compact.js +31 -0
  680. node_ui/node_modules/lodash/concat.js +43 -0
  681. node_ui/node_modules/lodash/cond.js +60 -0
  682. node_ui/node_modules/lodash/conforms.js +35 -0
  683. node_ui/node_modules/lodash/conformsTo.js +32 -0
  684. node_ui/node_modules/lodash/constant.js +26 -0
  685. node_ui/node_modules/lodash/core.js +3877 -0
  686. node_ui/node_modules/lodash/core.min.js +29 -0
  687. node_ui/node_modules/lodash/countBy.js +40 -0
  688. node_ui/node_modules/lodash/create.js +43 -0
  689. node_ui/node_modules/lodash/curry.js +57 -0
  690. node_ui/node_modules/lodash/curryRight.js +54 -0
  691. node_ui/node_modules/lodash/date.js +3 -0
  692. node_ui/node_modules/lodash/debounce.js +191 -0
  693. node_ui/node_modules/lodash/deburr.js +45 -0
  694. node_ui/node_modules/lodash/defaultTo.js +25 -0
  695. node_ui/node_modules/lodash/defaults.js +64 -0
  696. node_ui/node_modules/lodash/defaultsDeep.js +30 -0
  697. node_ui/node_modules/lodash/defer.js +26 -0
  698. node_ui/node_modules/lodash/delay.js +28 -0
  699. node_ui/node_modules/lodash/difference.js +33 -0
  700. node_ui/node_modules/lodash/differenceBy.js +44 -0
  701. node_ui/node_modules/lodash/differenceWith.js +40 -0
  702. node_ui/node_modules/lodash/divide.js +22 -0
  703. node_ui/node_modules/lodash/drop.js +38 -0
  704. node_ui/node_modules/lodash/dropRight.js +39 -0
  705. node_ui/node_modules/lodash/dropRightWhile.js +45 -0
  706. node_ui/node_modules/lodash/dropWhile.js +45 -0
  707. node_ui/node_modules/lodash/each.js +1 -0
  708. node_ui/node_modules/lodash/eachRight.js +1 -0
  709. node_ui/node_modules/lodash/endsWith.js +43 -0
  710. node_ui/node_modules/lodash/entries.js +1 -0
  711. node_ui/node_modules/lodash/entriesIn.js +1 -0
  712. node_ui/node_modules/lodash/eq.js +37 -0
  713. node_ui/node_modules/lodash/escape.js +43 -0
  714. node_ui/node_modules/lodash/escapeRegExp.js +32 -0
  715. node_ui/node_modules/lodash/every.js +56 -0
  716. node_ui/node_modules/lodash/extend.js +1 -0
  717. node_ui/node_modules/lodash/extendWith.js +1 -0
  718. node_ui/node_modules/lodash/fill.js +45 -0
  719. node_ui/node_modules/lodash/filter.js +52 -0
  720. node_ui/node_modules/lodash/find.js +42 -0
  721. node_ui/node_modules/lodash/findIndex.js +55 -0
  722. node_ui/node_modules/lodash/findKey.js +44 -0
  723. node_ui/node_modules/lodash/findLast.js +25 -0
  724. node_ui/node_modules/lodash/findLastIndex.js +59 -0
  725. node_ui/node_modules/lodash/findLastKey.js +44 -0
  726. node_ui/node_modules/lodash/first.js +1 -0
  727. node_ui/node_modules/lodash/flake.lock +40 -0
  728. node_ui/node_modules/lodash/flake.nix +20 -0
  729. node_ui/node_modules/lodash/flatMap.js +29 -0
  730. node_ui/node_modules/lodash/flatMapDeep.js +31 -0
  731. node_ui/node_modules/lodash/flatMapDepth.js +31 -0
  732. node_ui/node_modules/lodash/flatten.js +22 -0
  733. node_ui/node_modules/lodash/flattenDeep.js +25 -0
  734. node_ui/node_modules/lodash/flattenDepth.js +33 -0
  735. node_ui/node_modules/lodash/flip.js +28 -0
  736. node_ui/node_modules/lodash/floor.js +26 -0
  737. node_ui/node_modules/lodash/flow.js +27 -0
  738. node_ui/node_modules/lodash/flowRight.js +26 -0
  739. node_ui/node_modules/lodash/forEach.js +41 -0
  740. node_ui/node_modules/lodash/forEachRight.js +31 -0
  741. node_ui/node_modules/lodash/forIn.js +39 -0
  742. node_ui/node_modules/lodash/forInRight.js +37 -0
  743. node_ui/node_modules/lodash/forOwn.js +36 -0
  744. node_ui/node_modules/lodash/forOwnRight.js +34 -0
  745. node_ui/node_modules/lodash/fp/F.js +1 -0
  746. node_ui/node_modules/lodash/fp/T.js +1 -0
  747. node_ui/node_modules/lodash/fp/__.js +1 -0
  748. node_ui/node_modules/lodash/fp/_baseConvert.js +569 -0
  749. node_ui/node_modules/lodash/fp/_convertBrowser.js +18 -0
  750. node_ui/node_modules/lodash/fp/_falseOptions.js +7 -0
  751. node_ui/node_modules/lodash/fp/_mapping.js +358 -0
  752. node_ui/node_modules/lodash/fp/_util.js +16 -0
  753. node_ui/node_modules/lodash/fp/add.js +5 -0
  754. node_ui/node_modules/lodash/fp/after.js +5 -0
  755. node_ui/node_modules/lodash/fp/all.js +1 -0
  756. node_ui/node_modules/lodash/fp/allPass.js +1 -0
  757. node_ui/node_modules/lodash/fp/always.js +1 -0
  758. node_ui/node_modules/lodash/fp/any.js +1 -0
  759. node_ui/node_modules/lodash/fp/anyPass.js +1 -0
  760. node_ui/node_modules/lodash/fp/apply.js +1 -0
  761. node_ui/node_modules/lodash/fp/array.js +2 -0
  762. node_ui/node_modules/lodash/fp/ary.js +5 -0
  763. node_ui/node_modules/lodash/fp/assign.js +5 -0
  764. node_ui/node_modules/lodash/fp/assignAll.js +5 -0
  765. node_ui/node_modules/lodash/fp/assignAllWith.js +5 -0
  766. node_ui/node_modules/lodash/fp/assignIn.js +5 -0
  767. node_ui/node_modules/lodash/fp/assignInAll.js +5 -0
  768. node_ui/node_modules/lodash/fp/assignInAllWith.js +5 -0
  769. node_ui/node_modules/lodash/fp/assignInWith.js +5 -0
  770. node_ui/node_modules/lodash/fp/assignWith.js +5 -0
  771. node_ui/node_modules/lodash/fp/assoc.js +1 -0
  772. node_ui/node_modules/lodash/fp/assocPath.js +1 -0
  773. node_ui/node_modules/lodash/fp/at.js +5 -0
  774. node_ui/node_modules/lodash/fp/attempt.js +5 -0
  775. node_ui/node_modules/lodash/fp/before.js +5 -0
  776. node_ui/node_modules/lodash/fp/bind.js +5 -0
  777. node_ui/node_modules/lodash/fp/bindAll.js +5 -0
  778. node_ui/node_modules/lodash/fp/bindKey.js +5 -0
  779. node_ui/node_modules/lodash/fp/camelCase.js +5 -0
  780. node_ui/node_modules/lodash/fp/capitalize.js +5 -0
  781. node_ui/node_modules/lodash/fp/castArray.js +5 -0
  782. node_ui/node_modules/lodash/fp/ceil.js +5 -0
  783. node_ui/node_modules/lodash/fp/chain.js +5 -0
  784. node_ui/node_modules/lodash/fp/chunk.js +5 -0
  785. node_ui/node_modules/lodash/fp/clamp.js +5 -0
  786. node_ui/node_modules/lodash/fp/clone.js +5 -0
  787. node_ui/node_modules/lodash/fp/cloneDeep.js +5 -0
  788. node_ui/node_modules/lodash/fp/cloneDeepWith.js +5 -0
  789. node_ui/node_modules/lodash/fp/cloneWith.js +5 -0
  790. node_ui/node_modules/lodash/fp/collection.js +2 -0
  791. node_ui/node_modules/lodash/fp/commit.js +5 -0
  792. node_ui/node_modules/lodash/fp/compact.js +5 -0
  793. node_ui/node_modules/lodash/fp/complement.js +1 -0
  794. node_ui/node_modules/lodash/fp/compose.js +1 -0
  795. node_ui/node_modules/lodash/fp/concat.js +5 -0
  796. node_ui/node_modules/lodash/fp/cond.js +5 -0
  797. node_ui/node_modules/lodash/fp/conforms.js +1 -0
  798. node_ui/node_modules/lodash/fp/conformsTo.js +5 -0
  799. node_ui/node_modules/lodash/fp/constant.js +5 -0
  800. node_ui/node_modules/lodash/fp/contains.js +1 -0
  801. node_ui/node_modules/lodash/fp/convert.js +18 -0
  802. node_ui/node_modules/lodash/fp/countBy.js +5 -0
  803. node_ui/node_modules/lodash/fp/create.js +5 -0
  804. node_ui/node_modules/lodash/fp/curry.js +5 -0
  805. node_ui/node_modules/lodash/fp/curryN.js +5 -0
  806. node_ui/node_modules/lodash/fp/curryRight.js +5 -0
  807. node_ui/node_modules/lodash/fp/curryRightN.js +5 -0
  808. node_ui/node_modules/lodash/fp/date.js +2 -0
  809. node_ui/node_modules/lodash/fp/debounce.js +5 -0
  810. node_ui/node_modules/lodash/fp/deburr.js +5 -0
  811. node_ui/node_modules/lodash/fp/defaultTo.js +5 -0
  812. node_ui/node_modules/lodash/fp/defaults.js +5 -0
  813. node_ui/node_modules/lodash/fp/defaultsAll.js +5 -0
  814. node_ui/node_modules/lodash/fp/defaultsDeep.js +5 -0
  815. node_ui/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  816. node_ui/node_modules/lodash/fp/defer.js +5 -0
  817. node_ui/node_modules/lodash/fp/delay.js +5 -0
  818. node_ui/node_modules/lodash/fp/difference.js +5 -0
  819. node_ui/node_modules/lodash/fp/differenceBy.js +5 -0
  820. node_ui/node_modules/lodash/fp/differenceWith.js +5 -0
  821. node_ui/node_modules/lodash/fp/dissoc.js +1 -0
  822. node_ui/node_modules/lodash/fp/dissocPath.js +1 -0
  823. node_ui/node_modules/lodash/fp/divide.js +5 -0
  824. node_ui/node_modules/lodash/fp/drop.js +5 -0
  825. node_ui/node_modules/lodash/fp/dropLast.js +1 -0
  826. node_ui/node_modules/lodash/fp/dropLastWhile.js +1 -0
  827. node_ui/node_modules/lodash/fp/dropRight.js +5 -0
  828. node_ui/node_modules/lodash/fp/dropRightWhile.js +5 -0
  829. node_ui/node_modules/lodash/fp/dropWhile.js +5 -0
  830. node_ui/node_modules/lodash/fp/each.js +1 -0
  831. node_ui/node_modules/lodash/fp/eachRight.js +1 -0
  832. node_ui/node_modules/lodash/fp/endsWith.js +5 -0
  833. node_ui/node_modules/lodash/fp/entries.js +1 -0
  834. node_ui/node_modules/lodash/fp/entriesIn.js +1 -0
  835. node_ui/node_modules/lodash/fp/eq.js +5 -0
  836. node_ui/node_modules/lodash/fp/equals.js +1 -0
  837. node_ui/node_modules/lodash/fp/escape.js +5 -0
  838. node_ui/node_modules/lodash/fp/escapeRegExp.js +5 -0
  839. node_ui/node_modules/lodash/fp/every.js +5 -0
  840. node_ui/node_modules/lodash/fp/extend.js +1 -0
  841. node_ui/node_modules/lodash/fp/extendAll.js +1 -0
  842. node_ui/node_modules/lodash/fp/extendAllWith.js +1 -0
  843. node_ui/node_modules/lodash/fp/extendWith.js +1 -0
  844. node_ui/node_modules/lodash/fp/fill.js +5 -0
  845. node_ui/node_modules/lodash/fp/filter.js +5 -0
  846. node_ui/node_modules/lodash/fp/find.js +5 -0
  847. node_ui/node_modules/lodash/fp/findFrom.js +5 -0
  848. node_ui/node_modules/lodash/fp/findIndex.js +5 -0
  849. node_ui/node_modules/lodash/fp/findIndexFrom.js +5 -0
  850. node_ui/node_modules/lodash/fp/findKey.js +5 -0
  851. node_ui/node_modules/lodash/fp/findLast.js +5 -0
  852. node_ui/node_modules/lodash/fp/findLastFrom.js +5 -0
  853. node_ui/node_modules/lodash/fp/findLastIndex.js +5 -0
  854. node_ui/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
  855. node_ui/node_modules/lodash/fp/findLastKey.js +5 -0
  856. node_ui/node_modules/lodash/fp/first.js +1 -0
  857. node_ui/node_modules/lodash/fp/flatMap.js +5 -0
  858. node_ui/node_modules/lodash/fp/flatMapDeep.js +5 -0
  859. node_ui/node_modules/lodash/fp/flatMapDepth.js +5 -0
  860. node_ui/node_modules/lodash/fp/flatten.js +5 -0
  861. node_ui/node_modules/lodash/fp/flattenDeep.js +5 -0
  862. node_ui/node_modules/lodash/fp/flattenDepth.js +5 -0
  863. node_ui/node_modules/lodash/fp/flip.js +5 -0
  864. node_ui/node_modules/lodash/fp/floor.js +5 -0
  865. node_ui/node_modules/lodash/fp/flow.js +5 -0
  866. node_ui/node_modules/lodash/fp/flowRight.js +5 -0
  867. node_ui/node_modules/lodash/fp/forEach.js +5 -0
  868. node_ui/node_modules/lodash/fp/forEachRight.js +5 -0
  869. node_ui/node_modules/lodash/fp/forIn.js +5 -0
  870. node_ui/node_modules/lodash/fp/forInRight.js +5 -0
  871. node_ui/node_modules/lodash/fp/forOwn.js +5 -0
  872. node_ui/node_modules/lodash/fp/forOwnRight.js +5 -0
  873. node_ui/node_modules/lodash/fp/fromPairs.js +5 -0
  874. node_ui/node_modules/lodash/fp/function.js +2 -0
  875. node_ui/node_modules/lodash/fp/functions.js +5 -0
  876. node_ui/node_modules/lodash/fp/functionsIn.js +5 -0
  877. node_ui/node_modules/lodash/fp/get.js +5 -0
  878. node_ui/node_modules/lodash/fp/getOr.js +5 -0
  879. node_ui/node_modules/lodash/fp/groupBy.js +5 -0
  880. node_ui/node_modules/lodash/fp/gt.js +5 -0
  881. node_ui/node_modules/lodash/fp/gte.js +5 -0
  882. node_ui/node_modules/lodash/fp/has.js +5 -0
  883. node_ui/node_modules/lodash/fp/hasIn.js +5 -0
  884. node_ui/node_modules/lodash/fp/head.js +5 -0
  885. node_ui/node_modules/lodash/fp/identical.js +1 -0
  886. node_ui/node_modules/lodash/fp/identity.js +5 -0
  887. node_ui/node_modules/lodash/fp/inRange.js +5 -0
  888. node_ui/node_modules/lodash/fp/includes.js +5 -0
  889. node_ui/node_modules/lodash/fp/includesFrom.js +5 -0
  890. node_ui/node_modules/lodash/fp/indexBy.js +1 -0
  891. node_ui/node_modules/lodash/fp/indexOf.js +5 -0
  892. node_ui/node_modules/lodash/fp/indexOfFrom.js +5 -0
  893. node_ui/node_modules/lodash/fp/init.js +1 -0
  894. node_ui/node_modules/lodash/fp/initial.js +5 -0
  895. node_ui/node_modules/lodash/fp/intersection.js +5 -0
  896. node_ui/node_modules/lodash/fp/intersectionBy.js +5 -0
  897. node_ui/node_modules/lodash/fp/intersectionWith.js +5 -0
  898. node_ui/node_modules/lodash/fp/invert.js +5 -0
  899. node_ui/node_modules/lodash/fp/invertBy.js +5 -0
  900. node_ui/node_modules/lodash/fp/invertObj.js +1 -0
  901. node_ui/node_modules/lodash/fp/invoke.js +5 -0
  902. node_ui/node_modules/lodash/fp/invokeArgs.js +5 -0
  903. node_ui/node_modules/lodash/fp/invokeArgsMap.js +5 -0
  904. node_ui/node_modules/lodash/fp/invokeMap.js +5 -0
  905. node_ui/node_modules/lodash/fp/isArguments.js +5 -0
  906. node_ui/node_modules/lodash/fp/isArray.js +5 -0
  907. node_ui/node_modules/lodash/fp/isArrayBuffer.js +5 -0
  908. node_ui/node_modules/lodash/fp/isArrayLike.js +5 -0
  909. node_ui/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
  910. node_ui/node_modules/lodash/fp/isBoolean.js +5 -0
  911. node_ui/node_modules/lodash/fp/isBuffer.js +5 -0
  912. node_ui/node_modules/lodash/fp/isDate.js +5 -0
  913. node_ui/node_modules/lodash/fp/isElement.js +5 -0
  914. node_ui/node_modules/lodash/fp/isEmpty.js +5 -0
  915. node_ui/node_modules/lodash/fp/isEqual.js +5 -0
  916. node_ui/node_modules/lodash/fp/isEqualWith.js +5 -0
  917. node_ui/node_modules/lodash/fp/isError.js +5 -0
  918. node_ui/node_modules/lodash/fp/isFinite.js +5 -0
  919. node_ui/node_modules/lodash/fp/isFunction.js +5 -0
  920. node_ui/node_modules/lodash/fp/isInteger.js +5 -0
  921. node_ui/node_modules/lodash/fp/isLength.js +5 -0
  922. node_ui/node_modules/lodash/fp/isMap.js +5 -0
  923. node_ui/node_modules/lodash/fp/isMatch.js +5 -0
  924. node_ui/node_modules/lodash/fp/isMatchWith.js +5 -0
  925. node_ui/node_modules/lodash/fp/isNaN.js +5 -0
  926. node_ui/node_modules/lodash/fp/isNative.js +5 -0
  927. node_ui/node_modules/lodash/fp/isNil.js +5 -0
  928. node_ui/node_modules/lodash/fp/isNull.js +5 -0
  929. node_ui/node_modules/lodash/fp/isNumber.js +5 -0
  930. node_ui/node_modules/lodash/fp/isObject.js +5 -0
  931. node_ui/node_modules/lodash/fp/isObjectLike.js +5 -0
  932. node_ui/node_modules/lodash/fp/isPlainObject.js +5 -0
  933. node_ui/node_modules/lodash/fp/isRegExp.js +5 -0
  934. node_ui/node_modules/lodash/fp/isSafeInteger.js +5 -0
  935. node_ui/node_modules/lodash/fp/isSet.js +5 -0
  936. node_ui/node_modules/lodash/fp/isString.js +5 -0
  937. node_ui/node_modules/lodash/fp/isSymbol.js +5 -0
  938. node_ui/node_modules/lodash/fp/isTypedArray.js +5 -0
  939. node_ui/node_modules/lodash/fp/isUndefined.js +5 -0
  940. node_ui/node_modules/lodash/fp/isWeakMap.js +5 -0
  941. node_ui/node_modules/lodash/fp/isWeakSet.js +5 -0
  942. node_ui/node_modules/lodash/fp/iteratee.js +5 -0
  943. node_ui/node_modules/lodash/fp/join.js +5 -0
  944. node_ui/node_modules/lodash/fp/juxt.js +1 -0
  945. node_ui/node_modules/lodash/fp/kebabCase.js +5 -0
  946. node_ui/node_modules/lodash/fp/keyBy.js +5 -0
  947. node_ui/node_modules/lodash/fp/keys.js +5 -0
  948. node_ui/node_modules/lodash/fp/keysIn.js +5 -0
  949. node_ui/node_modules/lodash/fp/lang.js +2 -0
  950. node_ui/node_modules/lodash/fp/last.js +5 -0
  951. node_ui/node_modules/lodash/fp/lastIndexOf.js +5 -0
  952. node_ui/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
  953. node_ui/node_modules/lodash/fp/lowerCase.js +5 -0
  954. node_ui/node_modules/lodash/fp/lowerFirst.js +5 -0
  955. node_ui/node_modules/lodash/fp/lt.js +5 -0
  956. node_ui/node_modules/lodash/fp/lte.js +5 -0
  957. node_ui/node_modules/lodash/fp/map.js +5 -0
  958. node_ui/node_modules/lodash/fp/mapKeys.js +5 -0
  959. node_ui/node_modules/lodash/fp/mapValues.js +5 -0
  960. node_ui/node_modules/lodash/fp/matches.js +1 -0
  961. node_ui/node_modules/lodash/fp/matchesProperty.js +5 -0
  962. node_ui/node_modules/lodash/fp/math.js +2 -0
  963. node_ui/node_modules/lodash/fp/max.js +5 -0
  964. node_ui/node_modules/lodash/fp/maxBy.js +5 -0
  965. node_ui/node_modules/lodash/fp/mean.js +5 -0
  966. node_ui/node_modules/lodash/fp/meanBy.js +5 -0
  967. node_ui/node_modules/lodash/fp/memoize.js +5 -0
  968. node_ui/node_modules/lodash/fp/merge.js +5 -0
  969. node_ui/node_modules/lodash/fp/mergeAll.js +5 -0
  970. node_ui/node_modules/lodash/fp/mergeAllWith.js +5 -0
  971. node_ui/node_modules/lodash/fp/mergeWith.js +5 -0
  972. node_ui/node_modules/lodash/fp/method.js +5 -0
  973. node_ui/node_modules/lodash/fp/methodOf.js +5 -0
  974. node_ui/node_modules/lodash/fp/min.js +5 -0
  975. node_ui/node_modules/lodash/fp/minBy.js +5 -0
  976. node_ui/node_modules/lodash/fp/mixin.js +5 -0
  977. node_ui/node_modules/lodash/fp/multiply.js +5 -0
  978. node_ui/node_modules/lodash/fp/nAry.js +1 -0
  979. node_ui/node_modules/lodash/fp/negate.js +5 -0
  980. node_ui/node_modules/lodash/fp/next.js +5 -0
  981. node_ui/node_modules/lodash/fp/noop.js +5 -0
  982. node_ui/node_modules/lodash/fp/now.js +5 -0
  983. node_ui/node_modules/lodash/fp/nth.js +5 -0
  984. node_ui/node_modules/lodash/fp/nthArg.js +5 -0
  985. node_ui/node_modules/lodash/fp/number.js +2 -0
  986. node_ui/node_modules/lodash/fp/object.js +2 -0
  987. node_ui/node_modules/lodash/fp/omit.js +5 -0
  988. node_ui/node_modules/lodash/fp/omitAll.js +1 -0
  989. node_ui/node_modules/lodash/fp/omitBy.js +5 -0
  990. node_ui/node_modules/lodash/fp/once.js +5 -0
  991. node_ui/node_modules/lodash/fp/orderBy.js +5 -0
  992. node_ui/node_modules/lodash/fp/over.js +5 -0
  993. node_ui/node_modules/lodash/fp/overArgs.js +5 -0
  994. node_ui/node_modules/lodash/fp/overEvery.js +5 -0
  995. node_ui/node_modules/lodash/fp/overSome.js +5 -0
  996. node_ui/node_modules/lodash/fp/pad.js +5 -0
  997. node_ui/node_modules/lodash/fp/padChars.js +5 -0
  998. node_ui/node_modules/lodash/fp/padCharsEnd.js +5 -0
  999. node_ui/node_modules/lodash/fp/padCharsStart.js +5 -0
  1000. node_ui/node_modules/lodash/fp/padEnd.js +5 -0
  1001. node_ui/node_modules/lodash/fp/padStart.js +5 -0
  1002. node_ui/node_modules/lodash/fp/parseInt.js +5 -0
  1003. node_ui/node_modules/lodash/fp/partial.js +5 -0
  1004. node_ui/node_modules/lodash/fp/partialRight.js +5 -0
  1005. node_ui/node_modules/lodash/fp/partition.js +5 -0
  1006. node_ui/node_modules/lodash/fp/path.js +1 -0
  1007. node_ui/node_modules/lodash/fp/pathEq.js +1 -0
  1008. node_ui/node_modules/lodash/fp/pathOr.js +1 -0
  1009. node_ui/node_modules/lodash/fp/paths.js +1 -0
  1010. node_ui/node_modules/lodash/fp/pick.js +5 -0
  1011. node_ui/node_modules/lodash/fp/pickAll.js +1 -0
  1012. node_ui/node_modules/lodash/fp/pickBy.js +5 -0
  1013. node_ui/node_modules/lodash/fp/pipe.js +1 -0
  1014. node_ui/node_modules/lodash/fp/placeholder.js +6 -0
  1015. node_ui/node_modules/lodash/fp/plant.js +5 -0
  1016. node_ui/node_modules/lodash/fp/pluck.js +1 -0
  1017. node_ui/node_modules/lodash/fp/prop.js +1 -0
  1018. node_ui/node_modules/lodash/fp/propEq.js +1 -0
  1019. node_ui/node_modules/lodash/fp/propOr.js +1 -0
  1020. node_ui/node_modules/lodash/fp/property.js +1 -0
  1021. node_ui/node_modules/lodash/fp/propertyOf.js +5 -0
  1022. node_ui/node_modules/lodash/fp/props.js +1 -0
  1023. node_ui/node_modules/lodash/fp/pull.js +5 -0
  1024. node_ui/node_modules/lodash/fp/pullAll.js +5 -0
  1025. node_ui/node_modules/lodash/fp/pullAllBy.js +5 -0
  1026. node_ui/node_modules/lodash/fp/pullAllWith.js +5 -0
  1027. node_ui/node_modules/lodash/fp/pullAt.js +5 -0
  1028. node_ui/node_modules/lodash/fp/random.js +5 -0
  1029. node_ui/node_modules/lodash/fp/range.js +5 -0
  1030. node_ui/node_modules/lodash/fp/rangeRight.js +5 -0
  1031. node_ui/node_modules/lodash/fp/rangeStep.js +5 -0
  1032. node_ui/node_modules/lodash/fp/rangeStepRight.js +5 -0
  1033. node_ui/node_modules/lodash/fp/rearg.js +5 -0
  1034. node_ui/node_modules/lodash/fp/reduce.js +5 -0
  1035. node_ui/node_modules/lodash/fp/reduceRight.js +5 -0
  1036. node_ui/node_modules/lodash/fp/reject.js +5 -0
  1037. node_ui/node_modules/lodash/fp/remove.js +5 -0
  1038. node_ui/node_modules/lodash/fp/repeat.js +5 -0
  1039. node_ui/node_modules/lodash/fp/replace.js +5 -0
  1040. node_ui/node_modules/lodash/fp/rest.js +5 -0
  1041. node_ui/node_modules/lodash/fp/restFrom.js +5 -0
  1042. node_ui/node_modules/lodash/fp/result.js +5 -0
  1043. node_ui/node_modules/lodash/fp/reverse.js +5 -0
  1044. node_ui/node_modules/lodash/fp/round.js +5 -0
  1045. node_ui/node_modules/lodash/fp/sample.js +5 -0
  1046. node_ui/node_modules/lodash/fp/sampleSize.js +5 -0
  1047. node_ui/node_modules/lodash/fp/seq.js +2 -0
  1048. node_ui/node_modules/lodash/fp/set.js +5 -0
  1049. node_ui/node_modules/lodash/fp/setWith.js +5 -0
  1050. node_ui/node_modules/lodash/fp/shuffle.js +5 -0
  1051. node_ui/node_modules/lodash/fp/size.js +5 -0
  1052. node_ui/node_modules/lodash/fp/slice.js +5 -0
  1053. node_ui/node_modules/lodash/fp/snakeCase.js +5 -0
  1054. node_ui/node_modules/lodash/fp/some.js +5 -0
  1055. node_ui/node_modules/lodash/fp/sortBy.js +5 -0
  1056. node_ui/node_modules/lodash/fp/sortedIndex.js +5 -0
  1057. node_ui/node_modules/lodash/fp/sortedIndexBy.js +5 -0
  1058. node_ui/node_modules/lodash/fp/sortedIndexOf.js +5 -0
  1059. node_ui/node_modules/lodash/fp/sortedLastIndex.js +5 -0
  1060. node_ui/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
  1061. node_ui/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
  1062. node_ui/node_modules/lodash/fp/sortedUniq.js +5 -0
  1063. node_ui/node_modules/lodash/fp/sortedUniqBy.js +5 -0
  1064. node_ui/node_modules/lodash/fp/split.js +5 -0
  1065. node_ui/node_modules/lodash/fp/spread.js +5 -0
  1066. node_ui/node_modules/lodash/fp/spreadFrom.js +5 -0
  1067. node_ui/node_modules/lodash/fp/startCase.js +5 -0
  1068. node_ui/node_modules/lodash/fp/startsWith.js +5 -0
  1069. node_ui/node_modules/lodash/fp/string.js +2 -0
  1070. node_ui/node_modules/lodash/fp/stubArray.js +5 -0
  1071. node_ui/node_modules/lodash/fp/stubFalse.js +5 -0
  1072. node_ui/node_modules/lodash/fp/stubObject.js +5 -0
  1073. node_ui/node_modules/lodash/fp/stubString.js +5 -0
  1074. node_ui/node_modules/lodash/fp/stubTrue.js +5 -0
  1075. node_ui/node_modules/lodash/fp/subtract.js +5 -0
  1076. node_ui/node_modules/lodash/fp/sum.js +5 -0
  1077. node_ui/node_modules/lodash/fp/sumBy.js +5 -0
  1078. node_ui/node_modules/lodash/fp/symmetricDifference.js +1 -0
  1079. node_ui/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
  1080. node_ui/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
  1081. node_ui/node_modules/lodash/fp/tail.js +5 -0
  1082. node_ui/node_modules/lodash/fp/take.js +5 -0
  1083. node_ui/node_modules/lodash/fp/takeLast.js +1 -0
  1084. node_ui/node_modules/lodash/fp/takeLastWhile.js +1 -0
  1085. node_ui/node_modules/lodash/fp/takeRight.js +5 -0
  1086. node_ui/node_modules/lodash/fp/takeRightWhile.js +5 -0
  1087. node_ui/node_modules/lodash/fp/takeWhile.js +5 -0
  1088. node_ui/node_modules/lodash/fp/tap.js +5 -0
  1089. node_ui/node_modules/lodash/fp/template.js +5 -0
  1090. node_ui/node_modules/lodash/fp/templateSettings.js +5 -0
  1091. node_ui/node_modules/lodash/fp/throttle.js +5 -0
  1092. node_ui/node_modules/lodash/fp/thru.js +5 -0
  1093. node_ui/node_modules/lodash/fp/times.js +5 -0
  1094. node_ui/node_modules/lodash/fp/toArray.js +5 -0
  1095. node_ui/node_modules/lodash/fp/toFinite.js +5 -0
  1096. node_ui/node_modules/lodash/fp/toInteger.js +5 -0
  1097. node_ui/node_modules/lodash/fp/toIterator.js +5 -0
  1098. node_ui/node_modules/lodash/fp/toJSON.js +5 -0
  1099. node_ui/node_modules/lodash/fp/toLength.js +5 -0
  1100. node_ui/node_modules/lodash/fp/toLower.js +5 -0
  1101. node_ui/node_modules/lodash/fp/toNumber.js +5 -0
  1102. node_ui/node_modules/lodash/fp/toPairs.js +5 -0
  1103. node_ui/node_modules/lodash/fp/toPairsIn.js +5 -0
  1104. node_ui/node_modules/lodash/fp/toPath.js +5 -0
  1105. node_ui/node_modules/lodash/fp/toPlainObject.js +5 -0
  1106. node_ui/node_modules/lodash/fp/toSafeInteger.js +5 -0
  1107. node_ui/node_modules/lodash/fp/toString.js +5 -0
  1108. node_ui/node_modules/lodash/fp/toUpper.js +5 -0
  1109. node_ui/node_modules/lodash/fp/transform.js +5 -0
  1110. node_ui/node_modules/lodash/fp/trim.js +5 -0
  1111. node_ui/node_modules/lodash/fp/trimChars.js +5 -0
  1112. node_ui/node_modules/lodash/fp/trimCharsEnd.js +5 -0
  1113. node_ui/node_modules/lodash/fp/trimCharsStart.js +5 -0
  1114. node_ui/node_modules/lodash/fp/trimEnd.js +5 -0
  1115. node_ui/node_modules/lodash/fp/trimStart.js +5 -0
  1116. node_ui/node_modules/lodash/fp/truncate.js +5 -0
  1117. node_ui/node_modules/lodash/fp/unapply.js +1 -0
  1118. node_ui/node_modules/lodash/fp/unary.js +5 -0
  1119. node_ui/node_modules/lodash/fp/unescape.js +5 -0
  1120. node_ui/node_modules/lodash/fp/union.js +5 -0
  1121. node_ui/node_modules/lodash/fp/unionBy.js +5 -0
  1122. node_ui/node_modules/lodash/fp/unionWith.js +5 -0
  1123. node_ui/node_modules/lodash/fp/uniq.js +5 -0
  1124. node_ui/node_modules/lodash/fp/uniqBy.js +5 -0
  1125. node_ui/node_modules/lodash/fp/uniqWith.js +5 -0
  1126. node_ui/node_modules/lodash/fp/uniqueId.js +5 -0
  1127. node_ui/node_modules/lodash/fp/unnest.js +1 -0
  1128. node_ui/node_modules/lodash/fp/unset.js +5 -0
  1129. node_ui/node_modules/lodash/fp/unzip.js +5 -0
  1130. node_ui/node_modules/lodash/fp/unzipWith.js +5 -0
  1131. node_ui/node_modules/lodash/fp/update.js +5 -0
  1132. node_ui/node_modules/lodash/fp/updateWith.js +5 -0
  1133. node_ui/node_modules/lodash/fp/upperCase.js +5 -0
  1134. node_ui/node_modules/lodash/fp/upperFirst.js +5 -0
  1135. node_ui/node_modules/lodash/fp/useWith.js +1 -0
  1136. node_ui/node_modules/lodash/fp/util.js +2 -0
  1137. node_ui/node_modules/lodash/fp/value.js +5 -0
  1138. node_ui/node_modules/lodash/fp/valueOf.js +5 -0
  1139. node_ui/node_modules/lodash/fp/values.js +5 -0
  1140. node_ui/node_modules/lodash/fp/valuesIn.js +5 -0
  1141. node_ui/node_modules/lodash/fp/where.js +1 -0
  1142. node_ui/node_modules/lodash/fp/whereEq.js +1 -0
  1143. node_ui/node_modules/lodash/fp/without.js +5 -0
  1144. node_ui/node_modules/lodash/fp/words.js +5 -0
  1145. node_ui/node_modules/lodash/fp/wrap.js +5 -0
  1146. node_ui/node_modules/lodash/fp/wrapperAt.js +5 -0
  1147. node_ui/node_modules/lodash/fp/wrapperChain.js +5 -0
  1148. node_ui/node_modules/lodash/fp/wrapperLodash.js +5 -0
  1149. node_ui/node_modules/lodash/fp/wrapperReverse.js +5 -0
  1150. node_ui/node_modules/lodash/fp/wrapperValue.js +5 -0
  1151. node_ui/node_modules/lodash/fp/xor.js +5 -0
  1152. node_ui/node_modules/lodash/fp/xorBy.js +5 -0
  1153. node_ui/node_modules/lodash/fp/xorWith.js +5 -0
  1154. node_ui/node_modules/lodash/fp/zip.js +5 -0
  1155. node_ui/node_modules/lodash/fp/zipAll.js +5 -0
  1156. node_ui/node_modules/lodash/fp/zipObj.js +1 -0
  1157. node_ui/node_modules/lodash/fp/zipObject.js +5 -0
  1158. node_ui/node_modules/lodash/fp/zipObjectDeep.js +5 -0
  1159. node_ui/node_modules/lodash/fp/zipWith.js +5 -0
  1160. node_ui/node_modules/lodash/fp.js +2 -0
  1161. node_ui/node_modules/lodash/fromPairs.js +28 -0
  1162. node_ui/node_modules/lodash/function.js +25 -0
  1163. node_ui/node_modules/lodash/functions.js +31 -0
  1164. node_ui/node_modules/lodash/functionsIn.js +31 -0
  1165. node_ui/node_modules/lodash/get.js +33 -0
  1166. node_ui/node_modules/lodash/groupBy.js +41 -0
  1167. node_ui/node_modules/lodash/gt.js +29 -0
  1168. node_ui/node_modules/lodash/gte.js +30 -0
  1169. node_ui/node_modules/lodash/has.js +35 -0
  1170. node_ui/node_modules/lodash/hasIn.js +34 -0
  1171. node_ui/node_modules/lodash/head.js +23 -0
  1172. node_ui/node_modules/lodash/identity.js +21 -0
  1173. node_ui/node_modules/lodash/inRange.js +55 -0
  1174. node_ui/node_modules/lodash/includes.js +53 -0
  1175. node_ui/node_modules/lodash/index.js +1 -0
  1176. node_ui/node_modules/lodash/indexOf.js +42 -0
  1177. node_ui/node_modules/lodash/initial.js +22 -0
  1178. node_ui/node_modules/lodash/intersection.js +30 -0
  1179. node_ui/node_modules/lodash/intersectionBy.js +45 -0
  1180. node_ui/node_modules/lodash/intersectionWith.js +41 -0
  1181. node_ui/node_modules/lodash/invert.js +42 -0
  1182. node_ui/node_modules/lodash/invertBy.js +56 -0
  1183. node_ui/node_modules/lodash/invoke.js +24 -0
  1184. node_ui/node_modules/lodash/invokeMap.js +41 -0
  1185. node_ui/node_modules/lodash/isArguments.js +36 -0
  1186. node_ui/node_modules/lodash/isArray.js +26 -0
  1187. node_ui/node_modules/lodash/isArrayBuffer.js +27 -0
  1188. node_ui/node_modules/lodash/isArrayLike.js +33 -0
  1189. node_ui/node_modules/lodash/isArrayLikeObject.js +33 -0
  1190. node_ui/node_modules/lodash/isBoolean.js +29 -0
  1191. node_ui/node_modules/lodash/isBuffer.js +38 -0
  1192. node_ui/node_modules/lodash/isDate.js +27 -0
  1193. node_ui/node_modules/lodash/isElement.js +25 -0
  1194. node_ui/node_modules/lodash/isEmpty.js +77 -0
  1195. node_ui/node_modules/lodash/isEqual.js +35 -0
  1196. node_ui/node_modules/lodash/isEqualWith.js +41 -0
  1197. node_ui/node_modules/lodash/isError.js +36 -0
  1198. node_ui/node_modules/lodash/isFinite.js +36 -0
  1199. node_ui/node_modules/lodash/isFunction.js +37 -0
  1200. node_ui/node_modules/lodash/isInteger.js +33 -0
  1201. node_ui/node_modules/lodash/isLength.js +35 -0
  1202. node_ui/node_modules/lodash/isMap.js +27 -0
  1203. node_ui/node_modules/lodash/isMatch.js +36 -0
  1204. node_ui/node_modules/lodash/isMatchWith.js +41 -0
  1205. node_ui/node_modules/lodash/isNaN.js +38 -0
  1206. node_ui/node_modules/lodash/isNative.js +40 -0
  1207. node_ui/node_modules/lodash/isNil.js +25 -0
  1208. node_ui/node_modules/lodash/isNull.js +22 -0
  1209. node_ui/node_modules/lodash/isNumber.js +38 -0
  1210. node_ui/node_modules/lodash/isObject.js +31 -0
  1211. node_ui/node_modules/lodash/isObjectLike.js +29 -0
  1212. node_ui/node_modules/lodash/isPlainObject.js +62 -0
  1213. node_ui/node_modules/lodash/isRegExp.js +27 -0
  1214. node_ui/node_modules/lodash/isSafeInteger.js +37 -0
  1215. node_ui/node_modules/lodash/isSet.js +27 -0
  1216. node_ui/node_modules/lodash/isString.js +30 -0
  1217. node_ui/node_modules/lodash/isSymbol.js +29 -0
  1218. node_ui/node_modules/lodash/isTypedArray.js +27 -0
  1219. node_ui/node_modules/lodash/isUndefined.js +22 -0
  1220. node_ui/node_modules/lodash/isWeakMap.js +28 -0
  1221. node_ui/node_modules/lodash/isWeakSet.js +28 -0
  1222. node_ui/node_modules/lodash/iteratee.js +53 -0
  1223. node_ui/node_modules/lodash/join.js +26 -0
  1224. node_ui/node_modules/lodash/kebabCase.js +28 -0
  1225. node_ui/node_modules/lodash/keyBy.js +36 -0
  1226. node_ui/node_modules/lodash/keys.js +37 -0
  1227. node_ui/node_modules/lodash/keysIn.js +32 -0
  1228. node_ui/node_modules/lodash/lang.js +58 -0
  1229. node_ui/node_modules/lodash/last.js +20 -0
  1230. node_ui/node_modules/lodash/lastIndexOf.js +46 -0
  1231. node_ui/node_modules/lodash/lodash.js +17209 -0
  1232. node_ui/node_modules/lodash/lodash.min.js +140 -0
  1233. node_ui/node_modules/lodash/lowerCase.js +27 -0
  1234. node_ui/node_modules/lodash/lowerFirst.js +22 -0
  1235. node_ui/node_modules/lodash/lt.js +29 -0
  1236. node_ui/node_modules/lodash/lte.js +30 -0
  1237. node_ui/node_modules/lodash/map.js +53 -0
  1238. node_ui/node_modules/lodash/mapKeys.js +36 -0
  1239. node_ui/node_modules/lodash/mapValues.js +43 -0
  1240. node_ui/node_modules/lodash/matches.js +46 -0
  1241. node_ui/node_modules/lodash/matchesProperty.js +44 -0
  1242. node_ui/node_modules/lodash/math.js +17 -0
  1243. node_ui/node_modules/lodash/max.js +29 -0
  1244. node_ui/node_modules/lodash/maxBy.js +34 -0
  1245. node_ui/node_modules/lodash/mean.js +22 -0
  1246. node_ui/node_modules/lodash/meanBy.js +31 -0
  1247. node_ui/node_modules/lodash/memoize.js +73 -0
  1248. node_ui/node_modules/lodash/merge.js +39 -0
  1249. node_ui/node_modules/lodash/mergeWith.js +39 -0
  1250. node_ui/node_modules/lodash/method.js +34 -0
  1251. node_ui/node_modules/lodash/methodOf.js +33 -0
  1252. node_ui/node_modules/lodash/min.js +29 -0
  1253. node_ui/node_modules/lodash/minBy.js +34 -0
  1254. node_ui/node_modules/lodash/mixin.js +74 -0
  1255. node_ui/node_modules/lodash/multiply.js +22 -0
  1256. node_ui/node_modules/lodash/negate.js +40 -0
  1257. node_ui/node_modules/lodash/next.js +35 -0
  1258. node_ui/node_modules/lodash/noop.js +17 -0
  1259. node_ui/node_modules/lodash/now.js +23 -0
  1260. node_ui/node_modules/lodash/nth.js +29 -0
  1261. node_ui/node_modules/lodash/nthArg.js +32 -0
  1262. node_ui/node_modules/lodash/number.js +5 -0
  1263. node_ui/node_modules/lodash/object.js +49 -0
  1264. node_ui/node_modules/lodash/omit.js +57 -0
  1265. node_ui/node_modules/lodash/omitBy.js +29 -0
  1266. node_ui/node_modules/lodash/once.js +25 -0
  1267. node_ui/node_modules/lodash/orderBy.js +47 -0
  1268. node_ui/node_modules/lodash/over.js +24 -0
  1269. node_ui/node_modules/lodash/overArgs.js +61 -0
  1270. node_ui/node_modules/lodash/overEvery.js +34 -0
  1271. node_ui/node_modules/lodash/overSome.js +37 -0
  1272. node_ui/node_modules/lodash/package.json +17 -0
  1273. node_ui/node_modules/lodash/pad.js +49 -0
  1274. node_ui/node_modules/lodash/padEnd.js +39 -0
  1275. node_ui/node_modules/lodash/padStart.js +39 -0
  1276. node_ui/node_modules/lodash/parseInt.js +43 -0
  1277. node_ui/node_modules/lodash/partial.js +50 -0
  1278. node_ui/node_modules/lodash/partialRight.js +49 -0
  1279. node_ui/node_modules/lodash/partition.js +43 -0
  1280. node_ui/node_modules/lodash/pick.js +25 -0
  1281. node_ui/node_modules/lodash/pickBy.js +37 -0
  1282. node_ui/node_modules/lodash/plant.js +48 -0
  1283. node_ui/node_modules/lodash/property.js +32 -0
  1284. node_ui/node_modules/lodash/propertyOf.js +30 -0
  1285. node_ui/node_modules/lodash/pull.js +29 -0
  1286. node_ui/node_modules/lodash/pullAll.js +29 -0
  1287. node_ui/node_modules/lodash/pullAllBy.js +33 -0
  1288. node_ui/node_modules/lodash/pullAllWith.js +32 -0
  1289. node_ui/node_modules/lodash/pullAt.js +43 -0
  1290. node_ui/node_modules/lodash/random.js +82 -0
  1291. node_ui/node_modules/lodash/range.js +46 -0
  1292. node_ui/node_modules/lodash/rangeRight.js +41 -0
  1293. node_ui/node_modules/lodash/rearg.js +33 -0
  1294. node_ui/node_modules/lodash/reduce.js +51 -0
  1295. node_ui/node_modules/lodash/reduceRight.js +36 -0
  1296. node_ui/node_modules/lodash/reject.js +46 -0
  1297. node_ui/node_modules/lodash/release.md +48 -0
  1298. node_ui/node_modules/lodash/remove.js +53 -0
  1299. node_ui/node_modules/lodash/repeat.js +37 -0
  1300. node_ui/node_modules/lodash/replace.js +29 -0
  1301. node_ui/node_modules/lodash/rest.js +40 -0
  1302. node_ui/node_modules/lodash/result.js +56 -0
  1303. node_ui/node_modules/lodash/reverse.js +34 -0
  1304. node_ui/node_modules/lodash/round.js +26 -0
  1305. node_ui/node_modules/lodash/sample.js +24 -0
  1306. node_ui/node_modules/lodash/sampleSize.js +37 -0
  1307. node_ui/node_modules/lodash/seq.js +16 -0
  1308. node_ui/node_modules/lodash/set.js +35 -0
  1309. node_ui/node_modules/lodash/setWith.js +32 -0
  1310. node_ui/node_modules/lodash/shuffle.js +25 -0
  1311. node_ui/node_modules/lodash/size.js +46 -0
  1312. node_ui/node_modules/lodash/slice.js +37 -0
  1313. node_ui/node_modules/lodash/snakeCase.js +28 -0
  1314. node_ui/node_modules/lodash/some.js +51 -0
  1315. node_ui/node_modules/lodash/sortBy.js +48 -0
  1316. node_ui/node_modules/lodash/sortedIndex.js +24 -0
  1317. node_ui/node_modules/lodash/sortedIndexBy.js +33 -0
  1318. node_ui/node_modules/lodash/sortedIndexOf.js +31 -0
  1319. node_ui/node_modules/lodash/sortedLastIndex.js +25 -0
  1320. node_ui/node_modules/lodash/sortedLastIndexBy.js +33 -0
  1321. node_ui/node_modules/lodash/sortedLastIndexOf.js +31 -0
  1322. node_ui/node_modules/lodash/sortedUniq.js +24 -0
  1323. node_ui/node_modules/lodash/sortedUniqBy.js +26 -0
  1324. node_ui/node_modules/lodash/split.js +52 -0
  1325. node_ui/node_modules/lodash/spread.js +63 -0
  1326. node_ui/node_modules/lodash/startCase.js +29 -0
  1327. node_ui/node_modules/lodash/startsWith.js +39 -0
  1328. node_ui/node_modules/lodash/string.js +33 -0
  1329. node_ui/node_modules/lodash/stubArray.js +23 -0
  1330. node_ui/node_modules/lodash/stubFalse.js +18 -0
  1331. node_ui/node_modules/lodash/stubObject.js +23 -0
  1332. node_ui/node_modules/lodash/stubString.js +18 -0
  1333. node_ui/node_modules/lodash/stubTrue.js +18 -0
  1334. node_ui/node_modules/lodash/subtract.js +22 -0
  1335. node_ui/node_modules/lodash/sum.js +24 -0
  1336. node_ui/node_modules/lodash/sumBy.js +33 -0
  1337. node_ui/node_modules/lodash/tail.js +22 -0
  1338. node_ui/node_modules/lodash/take.js +37 -0
  1339. node_ui/node_modules/lodash/takeRight.js +39 -0
  1340. node_ui/node_modules/lodash/takeRightWhile.js +45 -0
  1341. node_ui/node_modules/lodash/takeWhile.js +45 -0
  1342. node_ui/node_modules/lodash/tap.js +29 -0
  1343. node_ui/node_modules/lodash/template.js +272 -0
  1344. node_ui/node_modules/lodash/templateSettings.js +67 -0
  1345. node_ui/node_modules/lodash/throttle.js +69 -0
  1346. node_ui/node_modules/lodash/thru.js +28 -0
  1347. node_ui/node_modules/lodash/times.js +51 -0
  1348. node_ui/node_modules/lodash/toArray.js +58 -0
  1349. node_ui/node_modules/lodash/toFinite.js +42 -0
  1350. node_ui/node_modules/lodash/toInteger.js +36 -0
  1351. node_ui/node_modules/lodash/toIterator.js +23 -0
  1352. node_ui/node_modules/lodash/toJSON.js +1 -0
  1353. node_ui/node_modules/lodash/toLength.js +38 -0
  1354. node_ui/node_modules/lodash/toLower.js +28 -0
  1355. node_ui/node_modules/lodash/toNumber.js +64 -0
  1356. node_ui/node_modules/lodash/toPairs.js +30 -0
  1357. node_ui/node_modules/lodash/toPairsIn.js +30 -0
  1358. node_ui/node_modules/lodash/toPath.js +33 -0
  1359. node_ui/node_modules/lodash/toPlainObject.js +32 -0
  1360. node_ui/node_modules/lodash/toSafeInteger.js +37 -0
  1361. node_ui/node_modules/lodash/toString.js +28 -0
  1362. node_ui/node_modules/lodash/toUpper.js +28 -0
  1363. node_ui/node_modules/lodash/transform.js +65 -0
  1364. node_ui/node_modules/lodash/trim.js +47 -0
  1365. node_ui/node_modules/lodash/trimEnd.js +41 -0
  1366. node_ui/node_modules/lodash/trimStart.js +43 -0
  1367. node_ui/node_modules/lodash/truncate.js +111 -0
  1368. node_ui/node_modules/lodash/unary.js +22 -0
  1369. node_ui/node_modules/lodash/unescape.js +34 -0
  1370. node_ui/node_modules/lodash/union.js +26 -0
  1371. node_ui/node_modules/lodash/unionBy.js +39 -0
  1372. node_ui/node_modules/lodash/unionWith.js +34 -0
  1373. node_ui/node_modules/lodash/uniq.js +25 -0
  1374. node_ui/node_modules/lodash/uniqBy.js +31 -0
  1375. node_ui/node_modules/lodash/uniqWith.js +28 -0
  1376. node_ui/node_modules/lodash/uniqueId.js +28 -0
  1377. node_ui/node_modules/lodash/unset.js +34 -0
  1378. node_ui/node_modules/lodash/unzip.js +45 -0
  1379. node_ui/node_modules/lodash/unzipWith.js +39 -0
  1380. node_ui/node_modules/lodash/update.js +35 -0
  1381. node_ui/node_modules/lodash/updateWith.js +33 -0
  1382. node_ui/node_modules/lodash/upperCase.js +27 -0
  1383. node_ui/node_modules/lodash/upperFirst.js +22 -0
  1384. node_ui/node_modules/lodash/util.js +34 -0
  1385. node_ui/node_modules/lodash/value.js +1 -0
  1386. node_ui/node_modules/lodash/valueOf.js +1 -0
  1387. node_ui/node_modules/lodash/values.js +34 -0
  1388. node_ui/node_modules/lodash/valuesIn.js +32 -0
  1389. node_ui/node_modules/lodash/without.js +31 -0
  1390. node_ui/node_modules/lodash/words.js +35 -0
  1391. node_ui/node_modules/lodash/wrap.js +30 -0
  1392. node_ui/node_modules/lodash/wrapperAt.js +48 -0
  1393. node_ui/node_modules/lodash/wrapperChain.js +34 -0
  1394. node_ui/node_modules/lodash/wrapperLodash.js +147 -0
  1395. node_ui/node_modules/lodash/wrapperReverse.js +44 -0
  1396. node_ui/node_modules/lodash/wrapperValue.js +21 -0
  1397. node_ui/node_modules/lodash/xor.js +28 -0
  1398. node_ui/node_modules/lodash/xorBy.js +39 -0
  1399. node_ui/node_modules/lodash/xorWith.js +34 -0
  1400. node_ui/node_modules/lodash/zip.js +22 -0
  1401. node_ui/node_modules/lodash/zipObject.js +24 -0
  1402. node_ui/node_modules/lodash/zipObjectDeep.js +23 -0
  1403. node_ui/node_modules/lodash/zipWith.js +32 -0
  1404. node_ui/node_modules/lodash.isequal/LICENSE +47 -0
  1405. node_ui/node_modules/lodash.isequal/README.md +18 -0
  1406. node_ui/node_modules/lodash.isequal/index.js +1848 -0
  1407. node_ui/node_modules/lodash.isequal/package.json +16 -0
  1408. node_ui/node_modules/loose-envify/LICENSE +21 -0
  1409. node_ui/node_modules/loose-envify/README.md +45 -0
  1410. node_ui/node_modules/loose-envify/cli.js +16 -0
  1411. node_ui/node_modules/loose-envify/custom.js +4 -0
  1412. node_ui/node_modules/loose-envify/index.js +3 -0
  1413. node_ui/node_modules/loose-envify/loose-envify.js +36 -0
  1414. node_ui/node_modules/loose-envify/package.json +36 -0
  1415. node_ui/node_modules/loose-envify/replace.js +65 -0
  1416. node_ui/node_modules/meow/build/dependencies.js +8828 -0
  1417. node_ui/node_modules/meow/build/index.d.ts +1425 -0
  1418. node_ui/node_modules/meow/build/index.js +95 -0
  1419. node_ui/node_modules/meow/build/licenses.md +1620 -0
  1420. node_ui/node_modules/meow/build/options.js +92 -0
  1421. node_ui/node_modules/meow/build/parser.js +84 -0
  1422. node_ui/node_modules/meow/build/utils.js +7 -0
  1423. node_ui/node_modules/meow/build/validate.js +122 -0
  1424. node_ui/node_modules/meow/license +9 -0
  1425. node_ui/node_modules/meow/package.json +105 -0
  1426. node_ui/node_modules/meow/readme.md +314 -0
  1427. node_ui/node_modules/mimic-fn/index.d.ts +54 -0
  1428. node_ui/node_modules/mimic-fn/index.js +13 -0
  1429. node_ui/node_modules/mimic-fn/license +9 -0
  1430. node_ui/node_modules/mimic-fn/package.json +42 -0
  1431. node_ui/node_modules/mimic-fn/readme.md +69 -0
  1432. node_ui/node_modules/onetime/index.d.ts +64 -0
  1433. node_ui/node_modules/onetime/index.js +44 -0
  1434. node_ui/node_modules/onetime/license +9 -0
  1435. node_ui/node_modules/onetime/package.json +43 -0
  1436. node_ui/node_modules/onetime/readme.md +94 -0
  1437. node_ui/node_modules/patch-console/dist/index.d.ts +4 -0
  1438. node_ui/node_modules/patch-console/dist/index.js +45 -0
  1439. node_ui/node_modules/patch-console/dist/index.js.map +1 -0
  1440. node_ui/node_modules/patch-console/license +9 -0
  1441. node_ui/node_modules/patch-console/package.json +53 -0
  1442. node_ui/node_modules/patch-console/readme.md +62 -0
  1443. node_ui/node_modules/react/LICENSE +21 -0
  1444. node_ui/node_modules/react/README.md +37 -0
  1445. node_ui/node_modules/react/cjs/react-jsx-dev-runtime.development.js +1315 -0
  1446. node_ui/node_modules/react/cjs/react-jsx-dev-runtime.production.min.js +10 -0
  1447. node_ui/node_modules/react/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
  1448. node_ui/node_modules/react/cjs/react-jsx-runtime.development.js +1333 -0
  1449. node_ui/node_modules/react/cjs/react-jsx-runtime.production.min.js +11 -0
  1450. node_ui/node_modules/react/cjs/react-jsx-runtime.profiling.min.js +11 -0
  1451. node_ui/node_modules/react/cjs/react.development.js +2740 -0
  1452. node_ui/node_modules/react/cjs/react.production.min.js +26 -0
  1453. node_ui/node_modules/react/cjs/react.shared-subset.development.js +20 -0
  1454. node_ui/node_modules/react/cjs/react.shared-subset.production.min.js +10 -0
  1455. node_ui/node_modules/react/index.js +7 -0
  1456. node_ui/node_modules/react/jsx-dev-runtime.js +7 -0
  1457. node_ui/node_modules/react/jsx-runtime.js +7 -0
  1458. node_ui/node_modules/react/package.json +47 -0
  1459. node_ui/node_modules/react/react.shared-subset.js +7 -0
  1460. node_ui/node_modules/react/umd/react.development.js +3343 -0
  1461. node_ui/node_modules/react/umd/react.production.min.js +31 -0
  1462. node_ui/node_modules/react/umd/react.profiling.min.js +31 -0
  1463. node_ui/node_modules/react-devtools-core/README.md +131 -0
  1464. node_ui/node_modules/react-devtools-core/backend.js +1 -0
  1465. node_ui/node_modules/react-devtools-core/dist/backend.js +16888 -0
  1466. node_ui/node_modules/react-devtools-core/dist/backend.js.map +1 -0
  1467. node_ui/node_modules/react-devtools-core/dist/importFile.worker.worker.js +2 -0
  1468. node_ui/node_modules/react-devtools-core/dist/importFile.worker.worker.js.map +1 -0
  1469. node_ui/node_modules/react-devtools-core/dist/parseHookNames.chunk.js +2 -0
  1470. node_ui/node_modules/react-devtools-core/dist/parseHookNames.chunk.js.map +1 -0
  1471. node_ui/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js +2 -0
  1472. node_ui/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js.map +1 -0
  1473. node_ui/node_modules/react-devtools-core/dist/standalone.js +3 -0
  1474. node_ui/node_modules/react-devtools-core/dist/standalone.js.LICENSE.txt +41 -0
  1475. node_ui/node_modules/react-devtools-core/dist/standalone.js.map +1 -0
  1476. node_ui/node_modules/react-devtools-core/node_modules/ws/LICENSE +21 -0
  1477. node_ui/node_modules/react-devtools-core/node_modules/ws/README.md +495 -0
  1478. node_ui/node_modules/react-devtools-core/node_modules/ws/browser.js +8 -0
  1479. node_ui/node_modules/react-devtools-core/node_modules/ws/index.js +10 -0
  1480. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/buffer-util.js +129 -0
  1481. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/constants.js +10 -0
  1482. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/event-target.js +184 -0
  1483. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/extension.js +223 -0
  1484. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/limiter.js +55 -0
  1485. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/permessage-deflate.js +518 -0
  1486. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/receiver.js +607 -0
  1487. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/sender.js +409 -0
  1488. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/stream.js +180 -0
  1489. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/validation.js +104 -0
  1490. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/websocket-server.js +449 -0
  1491. node_ui/node_modules/react-devtools-core/node_modules/ws/lib/websocket.js +1197 -0
  1492. node_ui/node_modules/react-devtools-core/node_modules/ws/package.json +56 -0
  1493. node_ui/node_modules/react-devtools-core/package.json +38 -0
  1494. node_ui/node_modules/react-devtools-core/standalone.js +1 -0
  1495. node_ui/node_modules/react-reconciler/LICENSE +21 -0
  1496. node_ui/node_modules/react-reconciler/README.md +337 -0
  1497. node_ui/node_modules/react-reconciler/cjs/react-reconciler-constants.development.js +45 -0
  1498. node_ui/node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js +10 -0
  1499. node_ui/node_modules/react-reconciler/cjs/react-reconciler-reflection.development.js +660 -0
  1500. node_ui/node_modules/react-reconciler/cjs/react-reconciler-reflection.production.min.js +15 -0
  1501. node_ui/node_modules/react-reconciler/cjs/react-reconciler.development.js +21531 -0
  1502. node_ui/node_modules/react-reconciler/cjs/react-reconciler.production.min.js +234 -0
  1503. node_ui/node_modules/react-reconciler/cjs/react-reconciler.profiling.min.js +255 -0
  1504. node_ui/node_modules/react-reconciler/constants.js +7 -0
  1505. node_ui/node_modules/react-reconciler/index.js +7 -0
  1506. node_ui/node_modules/react-reconciler/package.json +40 -0
  1507. node_ui/node_modules/react-reconciler/reflection.js +7 -0
  1508. node_ui/node_modules/restore-cursor/index.d.ts +11 -0
  1509. node_ui/node_modules/restore-cursor/index.js +11 -0
  1510. node_ui/node_modules/restore-cursor/license +9 -0
  1511. node_ui/node_modules/restore-cursor/package.json +55 -0
  1512. node_ui/node_modules/restore-cursor/readme.md +31 -0
  1513. node_ui/node_modules/scheduler/LICENSE +21 -0
  1514. node_ui/node_modules/scheduler/README.md +9 -0
  1515. node_ui/node_modules/scheduler/cjs/scheduler-unstable_mock.development.js +700 -0
  1516. node_ui/node_modules/scheduler/cjs/scheduler-unstable_mock.production.min.js +20 -0
  1517. node_ui/node_modules/scheduler/cjs/scheduler-unstable_post_task.development.js +207 -0
  1518. node_ui/node_modules/scheduler/cjs/scheduler-unstable_post_task.production.min.js +14 -0
  1519. node_ui/node_modules/scheduler/cjs/scheduler.development.js +634 -0
  1520. node_ui/node_modules/scheduler/cjs/scheduler.production.min.js +19 -0
  1521. node_ui/node_modules/scheduler/index.js +7 -0
  1522. node_ui/node_modules/scheduler/package.json +36 -0
  1523. node_ui/node_modules/scheduler/umd/scheduler-unstable_mock.development.js +699 -0
  1524. node_ui/node_modules/scheduler/umd/scheduler-unstable_mock.production.min.js +19 -0
  1525. node_ui/node_modules/scheduler/umd/scheduler.development.js +152 -0
  1526. node_ui/node_modules/scheduler/umd/scheduler.production.min.js +146 -0
  1527. node_ui/node_modules/scheduler/umd/scheduler.profiling.min.js +146 -0
  1528. node_ui/node_modules/scheduler/unstable_mock.js +7 -0
  1529. node_ui/node_modules/scheduler/unstable_post_task.js +7 -0
  1530. node_ui/node_modules/shell-quote/.eslintrc +30 -0
  1531. node_ui/node_modules/shell-quote/.github/FUNDING.yml +12 -0
  1532. node_ui/node_modules/shell-quote/.nycrc +14 -0
  1533. node_ui/node_modules/shell-quote/LICENSE +24 -0
  1534. node_ui/node_modules/shell-quote/README.md +161 -0
  1535. node_ui/node_modules/shell-quote/index.js +4 -0
  1536. node_ui/node_modules/shell-quote/package.json +72 -0
  1537. node_ui/node_modules/shell-quote/parse.js +226 -0
  1538. node_ui/node_modules/shell-quote/print.py +3 -0
  1539. node_ui/node_modules/shell-quote/quote.js +19 -0
  1540. node_ui/node_modules/shell-quote/security.md +11 -0
  1541. node_ui/node_modules/shell-quote/test/comment.js +16 -0
  1542. node_ui/node_modules/shell-quote/test/env.js +52 -0
  1543. node_ui/node_modules/shell-quote/test/env_fn.js +21 -0
  1544. node_ui/node_modules/shell-quote/test/op.js +102 -0
  1545. node_ui/node_modules/shell-quote/test/parse.js +44 -0
  1546. node_ui/node_modules/shell-quote/test/quote.js +60 -0
  1547. node_ui/node_modules/shell-quote/test/set.js +31 -0
  1548. node_ui/node_modules/signal-exit/LICENSE.txt +16 -0
  1549. node_ui/node_modules/signal-exit/README.md +39 -0
  1550. node_ui/node_modules/signal-exit/index.js +202 -0
  1551. node_ui/node_modules/signal-exit/package.json +38 -0
  1552. node_ui/node_modules/signal-exit/signals.js +53 -0
  1553. node_ui/node_modules/slice-ansi/index.d.ts +19 -0
  1554. node_ui/node_modules/slice-ansi/index.js +169 -0
  1555. node_ui/node_modules/slice-ansi/license +10 -0
  1556. node_ui/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  1557. node_ui/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js +12 -0
  1558. node_ui/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/license +9 -0
  1559. node_ui/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json +53 -0
  1560. node_ui/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/readme.md +31 -0
  1561. node_ui/node_modules/slice-ansi/package.json +58 -0
  1562. node_ui/node_modules/slice-ansi/readme.md +54 -0
  1563. node_ui/node_modules/stack-utils/LICENSE.md +21 -0
  1564. node_ui/node_modules/stack-utils/index.js +344 -0
  1565. node_ui/node_modules/stack-utils/node_modules/escape-string-regexp/index.d.ts +18 -0
  1566. node_ui/node_modules/stack-utils/node_modules/escape-string-regexp/index.js +11 -0
  1567. node_ui/node_modules/stack-utils/node_modules/escape-string-regexp/license +9 -0
  1568. node_ui/node_modules/stack-utils/node_modules/escape-string-regexp/package.json +43 -0
  1569. node_ui/node_modules/stack-utils/node_modules/escape-string-regexp/readme.md +29 -0
  1570. node_ui/node_modules/stack-utils/package.json +39 -0
  1571. node_ui/node_modules/stack-utils/readme.md +143 -0
  1572. node_ui/node_modules/string-width/index.d.ts +39 -0
  1573. node_ui/node_modules/string-width/index.js +82 -0
  1574. node_ui/node_modules/string-width/license +9 -0
  1575. node_ui/node_modules/string-width/package.json +64 -0
  1576. node_ui/node_modules/string-width/readme.md +66 -0
  1577. node_ui/node_modules/strip-ansi/index.d.ts +15 -0
  1578. node_ui/node_modules/strip-ansi/index.js +14 -0
  1579. node_ui/node_modules/strip-ansi/license +9 -0
  1580. node_ui/node_modules/strip-ansi/package.json +59 -0
  1581. node_ui/node_modules/strip-ansi/readme.md +37 -0
  1582. node_ui/node_modules/to-rotated/index.d.ts +18 -0
  1583. node_ui/node_modules/to-rotated/index.js +24 -0
  1584. node_ui/node_modules/to-rotated/license +9 -0
  1585. node_ui/node_modules/to-rotated/package.json +46 -0
  1586. node_ui/node_modules/to-rotated/readme.md +29 -0
  1587. node_ui/node_modules/type-fest/index.d.ts +178 -0
  1588. node_ui/node_modules/type-fest/license-cc0 +121 -0
  1589. node_ui/node_modules/type-fest/license-mit +9 -0
  1590. node_ui/node_modules/type-fest/package.json +91 -0
  1591. node_ui/node_modules/type-fest/readme.md +1060 -0
  1592. node_ui/node_modules/type-fest/source/all-union-fields.d.ts +88 -0
  1593. node_ui/node_modules/type-fest/source/and.d.ts +25 -0
  1594. node_ui/node_modules/type-fest/source/array-indices.d.ts +23 -0
  1595. node_ui/node_modules/type-fest/source/array-slice.d.ts +109 -0
  1596. node_ui/node_modules/type-fest/source/array-splice.d.ts +99 -0
  1597. node_ui/node_modules/type-fest/source/array-tail.d.ts +76 -0
  1598. node_ui/node_modules/type-fest/source/array-values.d.ts +22 -0
  1599. node_ui/node_modules/type-fest/source/arrayable.d.ts +29 -0
  1600. node_ui/node_modules/type-fest/source/async-return-type.d.ts +23 -0
  1601. node_ui/node_modules/type-fest/source/asyncify.d.ts +32 -0
  1602. node_ui/node_modules/type-fest/source/basic.d.ts +68 -0
  1603. node_ui/node_modules/type-fest/source/camel-case.d.ts +89 -0
  1604. node_ui/node_modules/type-fest/source/camel-cased-properties-deep.d.ts +97 -0
  1605. node_ui/node_modules/type-fest/source/camel-cased-properties.d.ts +43 -0
  1606. node_ui/node_modules/type-fest/source/conditional-except.d.ts +45 -0
  1607. node_ui/node_modules/type-fest/source/conditional-keys.d.ts +47 -0
  1608. node_ui/node_modules/type-fest/source/conditional-pick-deep.d.ts +118 -0
  1609. node_ui/node_modules/type-fest/source/conditional-pick.d.ts +44 -0
  1610. node_ui/node_modules/type-fest/source/conditional-simplify.d.ts +32 -0
  1611. node_ui/node_modules/type-fest/source/delimiter-case.d.ts +78 -0
  1612. node_ui/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts +106 -0
  1613. node_ui/node_modules/type-fest/source/delimiter-cased-properties.d.ts +46 -0
  1614. node_ui/node_modules/type-fest/source/distributed-omit.d.ts +89 -0
  1615. node_ui/node_modules/type-fest/source/distributed-pick.d.ts +85 -0
  1616. node_ui/node_modules/type-fest/source/empty-object.d.ts +46 -0
  1617. node_ui/node_modules/type-fest/source/enforce-optional.d.ts +47 -0
  1618. node_ui/node_modules/type-fest/source/entries.d.ts +62 -0
  1619. node_ui/node_modules/type-fest/source/entry.d.ts +65 -0
  1620. node_ui/node_modules/type-fest/source/exact.d.ts +68 -0
  1621. node_ui/node_modules/type-fest/source/except.d.ts +108 -0
  1622. node_ui/node_modules/type-fest/source/find-global-type.d.ts +64 -0
  1623. node_ui/node_modules/type-fest/source/fixed-length-array.d.ts +43 -0
  1624. node_ui/node_modules/type-fest/source/get.d.ts +219 -0
  1625. node_ui/node_modules/type-fest/source/global-this.d.ts +21 -0
  1626. node_ui/node_modules/type-fest/source/greater-than-or-equal.d.ts +22 -0
  1627. node_ui/node_modules/type-fest/source/greater-than.d.ts +56 -0
  1628. node_ui/node_modules/type-fest/source/has-optional-keys.d.ts +21 -0
  1629. node_ui/node_modules/type-fest/source/has-readonly-keys.d.ts +21 -0
  1630. node_ui/node_modules/type-fest/source/has-required-keys.d.ts +59 -0
  1631. node_ui/node_modules/type-fest/source/has-writable-keys.d.ts +21 -0
  1632. node_ui/node_modules/type-fest/source/if-any.d.ts +24 -0
  1633. node_ui/node_modules/type-fest/source/if-empty-object.d.ts +26 -0
  1634. node_ui/node_modules/type-fest/source/if-never.d.ts +24 -0
  1635. node_ui/node_modules/type-fest/source/if-null.d.ts +24 -0
  1636. node_ui/node_modules/type-fest/source/if-unknown.d.ts +24 -0
  1637. node_ui/node_modules/type-fest/source/includes.d.ts +22 -0
  1638. node_ui/node_modules/type-fest/source/int-closed-range.d.ts +35 -0
  1639. node_ui/node_modules/type-fest/source/int-range.d.ts +55 -0
  1640. node_ui/node_modules/type-fest/source/internal/array.d.ts +126 -0
  1641. node_ui/node_modules/type-fest/source/internal/characters.d.ts +67 -0
  1642. node_ui/node_modules/type-fest/source/internal/index.d.ts +8 -0
  1643. node_ui/node_modules/type-fest/source/internal/keys.d.ts +97 -0
  1644. node_ui/node_modules/type-fest/source/internal/numeric.d.ts +118 -0
  1645. node_ui/node_modules/type-fest/source/internal/object.d.ts +236 -0
  1646. node_ui/node_modules/type-fest/source/internal/string.d.ts +210 -0
  1647. node_ui/node_modules/type-fest/source/internal/tuple.d.ts +90 -0
  1648. node_ui/node_modules/type-fest/source/internal/type.d.ts +139 -0
  1649. node_ui/node_modules/type-fest/source/invariant-of.d.ts +76 -0
  1650. node_ui/node_modules/type-fest/source/is-any.d.ts +33 -0
  1651. node_ui/node_modules/type-fest/source/is-equal.d.ts +31 -0
  1652. node_ui/node_modules/type-fest/source/is-float.d.ts +41 -0
  1653. node_ui/node_modules/type-fest/source/is-integer.d.ts +58 -0
  1654. node_ui/node_modules/type-fest/source/is-literal.d.ts +296 -0
  1655. node_ui/node_modules/type-fest/source/is-never.d.ts +42 -0
  1656. node_ui/node_modules/type-fest/source/is-null.d.ts +20 -0
  1657. node_ui/node_modules/type-fest/source/is-tuple.d.ts +89 -0
  1658. node_ui/node_modules/type-fest/source/is-unknown.d.ts +52 -0
  1659. node_ui/node_modules/type-fest/source/iterable-element.d.ts +64 -0
  1660. node_ui/node_modules/type-fest/source/join.d.ts +68 -0
  1661. node_ui/node_modules/type-fest/source/jsonifiable.d.ts +37 -0
  1662. node_ui/node_modules/type-fest/source/jsonify.d.ts +122 -0
  1663. node_ui/node_modules/type-fest/source/kebab-case.d.ts +44 -0
  1664. node_ui/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts +63 -0
  1665. node_ui/node_modules/type-fest/source/kebab-cased-properties.d.ts +40 -0
  1666. node_ui/node_modules/type-fest/source/keys-of-union.d.ts +42 -0
  1667. node_ui/node_modules/type-fest/source/last-array-element.d.ts +38 -0
  1668. node_ui/node_modules/type-fest/source/less-than-or-equal.d.ts +22 -0
  1669. node_ui/node_modules/type-fest/source/less-than.d.ts +26 -0
  1670. node_ui/node_modules/type-fest/source/literal-to-primitive-deep.d.ts +36 -0
  1671. node_ui/node_modules/type-fest/source/literal-to-primitive.d.ts +36 -0
  1672. node_ui/node_modules/type-fest/source/literal-union.d.ts +37 -0
  1673. node_ui/node_modules/type-fest/source/merge-deep.d.ts +486 -0
  1674. node_ui/node_modules/type-fest/source/merge-exclusive.d.ts +41 -0
  1675. node_ui/node_modules/type-fest/source/merge.d.ts +48 -0
  1676. node_ui/node_modules/type-fest/source/multidimensional-array.d.ts +44 -0
  1677. node_ui/node_modules/type-fest/source/multidimensional-readonly-array.d.ts +48 -0
  1678. node_ui/node_modules/type-fest/source/non-empty-object.d.ts +35 -0
  1679. node_ui/node_modules/type-fest/source/non-empty-string.d.ts +28 -0
  1680. node_ui/node_modules/type-fest/source/non-empty-tuple.d.ts +21 -0
  1681. node_ui/node_modules/type-fest/source/numeric.d.ts +222 -0
  1682. node_ui/node_modules/type-fest/source/observable-like.d.ts +63 -0
  1683. node_ui/node_modules/type-fest/source/omit-deep.d.ts +167 -0
  1684. node_ui/node_modules/type-fest/source/omit-index-signature.d.ts +95 -0
  1685. node_ui/node_modules/type-fest/source/opaque.d.ts +1 -0
  1686. node_ui/node_modules/type-fest/source/optional-keys-of.d.ts +39 -0
  1687. node_ui/node_modules/type-fest/source/or.d.ts +25 -0
  1688. node_ui/node_modules/type-fest/source/override-properties.d.ts +36 -0
  1689. node_ui/node_modules/type-fest/source/package-json.d.ts +676 -0
  1690. node_ui/node_modules/type-fest/source/partial-deep.d.ts +151 -0
  1691. node_ui/node_modules/type-fest/source/partial-on-undefined-deep.d.ts +78 -0
  1692. node_ui/node_modules/type-fest/source/pascal-case.d.ts +42 -0
  1693. node_ui/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts +62 -0
  1694. node_ui/node_modules/type-fest/source/pascal-cased-properties.d.ts +36 -0
  1695. node_ui/node_modules/type-fest/source/paths.d.ts +262 -0
  1696. node_ui/node_modules/type-fest/source/pick-deep.d.ts +149 -0
  1697. node_ui/node_modules/type-fest/source/pick-index-signature.d.ts +50 -0
  1698. node_ui/node_modules/type-fest/source/primitive.d.ts +13 -0
  1699. node_ui/node_modules/type-fest/source/promisable.d.ts +25 -0
  1700. node_ui/node_modules/type-fest/source/readonly-deep.d.ts +81 -0
  1701. node_ui/node_modules/type-fest/source/readonly-keys-of.d.ts +30 -0
  1702. node_ui/node_modules/type-fest/source/readonly-tuple.d.ts +41 -0
  1703. node_ui/node_modules/type-fest/source/replace.d.ts +85 -0
  1704. node_ui/node_modules/type-fest/source/require-all-or-none.d.ts +51 -0
  1705. node_ui/node_modules/type-fest/source/require-at-least-one.d.ts +47 -0
  1706. node_ui/node_modules/type-fest/source/require-exactly-one.d.ts +45 -0
  1707. node_ui/node_modules/type-fest/source/require-one-or-none.d.ts +46 -0
  1708. node_ui/node_modules/type-fest/source/required-deep.d.ts +78 -0
  1709. node_ui/node_modules/type-fest/source/required-keys-of.d.ts +30 -0
  1710. node_ui/node_modules/type-fest/source/schema.d.ts +114 -0
  1711. node_ui/node_modules/type-fest/source/screaming-snake-case.d.ts +28 -0
  1712. node_ui/node_modules/type-fest/source/set-field-type.d.ts +65 -0
  1713. node_ui/node_modules/type-fest/source/set-non-nullable-deep.d.ts +83 -0
  1714. node_ui/node_modules/type-fest/source/set-non-nullable.d.ts +39 -0
  1715. node_ui/node_modules/type-fest/source/set-optional.d.ts +38 -0
  1716. node_ui/node_modules/type-fest/source/set-parameter-type.d.ts +117 -0
  1717. node_ui/node_modules/type-fest/source/set-readonly.d.ts +39 -0
  1718. node_ui/node_modules/type-fest/source/set-required-deep.d.ts +68 -0
  1719. node_ui/node_modules/type-fest/source/set-required.d.ts +70 -0
  1720. node_ui/node_modules/type-fest/source/set-return-type.d.ts +29 -0
  1721. node_ui/node_modules/type-fest/source/shared-union-fields-deep.d.ts +178 -0
  1722. node_ui/node_modules/type-fest/source/shared-union-fields.d.ts +76 -0
  1723. node_ui/node_modules/type-fest/source/simplify-deep.d.ts +115 -0
  1724. node_ui/node_modules/type-fest/source/simplify.d.ts +58 -0
  1725. node_ui/node_modules/type-fest/source/single-key-object.d.ts +29 -0
  1726. node_ui/node_modules/type-fest/source/snake-case.d.ts +45 -0
  1727. node_ui/node_modules/type-fest/source/snake-cased-properties-deep.d.ts +63 -0
  1728. node_ui/node_modules/type-fest/source/snake-cased-properties.d.ts +40 -0
  1729. node_ui/node_modules/type-fest/source/split.d.ts +88 -0
  1730. node_ui/node_modules/type-fest/source/spread.d.ts +84 -0
  1731. node_ui/node_modules/type-fest/source/string-key-of.d.ts +25 -0
  1732. node_ui/node_modules/type-fest/source/string-repeat.d.ts +47 -0
  1733. node_ui/node_modules/type-fest/source/string-slice.d.ts +37 -0
  1734. node_ui/node_modules/type-fest/source/stringified.d.ts +23 -0
  1735. node_ui/node_modules/type-fest/source/structured-cloneable.d.ts +92 -0
  1736. node_ui/node_modules/type-fest/source/subtract.d.ts +83 -0
  1737. node_ui/node_modules/type-fest/source/sum.d.ts +78 -0
  1738. node_ui/node_modules/type-fest/source/tagged-union.d.ts +51 -0
  1739. node_ui/node_modules/type-fest/source/tagged.d.ts +256 -0
  1740. node_ui/node_modules/type-fest/source/trim.d.ts +27 -0
  1741. node_ui/node_modules/type-fest/source/tsconfig-json.d.ts +1294 -0
  1742. node_ui/node_modules/type-fest/source/tuple-to-object.d.ts +42 -0
  1743. node_ui/node_modules/type-fest/source/tuple-to-union.d.ts +51 -0
  1744. node_ui/node_modules/type-fest/source/typed-array.d.ts +17 -0
  1745. node_ui/node_modules/type-fest/source/undefined-on-partial-deep.d.ts +80 -0
  1746. node_ui/node_modules/type-fest/source/union-to-intersection.d.ts +61 -0
  1747. node_ui/node_modules/type-fest/source/union-to-tuple.d.ts +56 -0
  1748. node_ui/node_modules/type-fest/source/unknown-array.d.ts +25 -0
  1749. node_ui/node_modules/type-fest/source/unknown-map.d.ts +24 -0
  1750. node_ui/node_modules/type-fest/source/unknown-record.d.ts +31 -0
  1751. node_ui/node_modules/type-fest/source/unknown-set.d.ts +24 -0
  1752. node_ui/node_modules/type-fest/source/value-of.d.ts +42 -0
  1753. node_ui/node_modules/type-fest/source/words.d.ts +118 -0
  1754. node_ui/node_modules/type-fest/source/writable-deep.d.ts +83 -0
  1755. node_ui/node_modules/type-fest/source/writable-keys-of.d.ts +33 -0
  1756. node_ui/node_modules/type-fest/source/writable.d.ts +68 -0
  1757. node_ui/node_modules/widest-line/index.d.ts +12 -0
  1758. node_ui/node_modules/widest-line/index.js +11 -0
  1759. node_ui/node_modules/widest-line/license +9 -0
  1760. node_ui/node_modules/widest-line/package.json +60 -0
  1761. node_ui/node_modules/widest-line/readme.md +26 -0
  1762. node_ui/node_modules/wrap-ansi/index.d.ts +41 -0
  1763. node_ui/node_modules/wrap-ansi/index.js +222 -0
  1764. node_ui/node_modules/wrap-ansi/license +9 -0
  1765. node_ui/node_modules/wrap-ansi/package.json +69 -0
  1766. node_ui/node_modules/wrap-ansi/readme.md +75 -0
  1767. node_ui/node_modules/ws/LICENSE +20 -0
  1768. node_ui/node_modules/ws/README.md +548 -0
  1769. node_ui/node_modules/ws/browser.js +8 -0
  1770. node_ui/node_modules/ws/index.js +13 -0
  1771. node_ui/node_modules/ws/lib/buffer-util.js +131 -0
  1772. node_ui/node_modules/ws/lib/constants.js +18 -0
  1773. node_ui/node_modules/ws/lib/event-target.js +292 -0
  1774. node_ui/node_modules/ws/lib/extension.js +203 -0
  1775. node_ui/node_modules/ws/lib/limiter.js +55 -0
  1776. node_ui/node_modules/ws/lib/permessage-deflate.js +528 -0
  1777. node_ui/node_modules/ws/lib/receiver.js +706 -0
  1778. node_ui/node_modules/ws/lib/sender.js +602 -0
  1779. node_ui/node_modules/ws/lib/stream.js +161 -0
  1780. node_ui/node_modules/ws/lib/subprotocol.js +62 -0
  1781. node_ui/node_modules/ws/lib/validation.js +152 -0
  1782. node_ui/node_modules/ws/lib/websocket-server.js +550 -0
  1783. node_ui/node_modules/ws/lib/websocket.js +1388 -0
  1784. node_ui/node_modules/ws/package.json +69 -0
  1785. node_ui/node_modules/ws/wrapper.mjs +8 -0
  1786. node_ui/node_modules/yoga-wasm-web/LICENSE +21 -0
  1787. node_ui/node_modules/yoga-wasm-web/README.md +70 -0
  1788. node_ui/node_modules/yoga-wasm-web/dist/asm.d.ts +6 -0
  1789. node_ui/node_modules/yoga-wasm-web/dist/asm.js +1 -0
  1790. node_ui/node_modules/yoga-wasm-web/dist/auto.d.ts +7 -0
  1791. node_ui/node_modules/yoga-wasm-web/dist/browser.js +1 -0
  1792. node_ui/node_modules/yoga-wasm-web/dist/generated/YGEnums.d.ts +328 -0
  1793. node_ui/node_modules/yoga-wasm-web/dist/index.d.ts +7 -0
  1794. node_ui/node_modules/yoga-wasm-web/dist/index.js +1 -0
  1795. node_ui/node_modules/yoga-wasm-web/dist/node.js +1 -0
  1796. node_ui/node_modules/yoga-wasm-web/dist/wrapAsm-57389177.js +1 -0
  1797. node_ui/node_modules/yoga-wasm-web/dist/wrapAsm-f766f97f.js +1 -0
  1798. node_ui/node_modules/yoga-wasm-web/dist/wrapAsm.d.ts +176 -0
  1799. node_ui/node_modules/yoga-wasm-web/dist/yoga.wasm +0 -0
  1800. node_ui/node_modules/yoga-wasm-web/package.json +56 -0
  1801. node_ui/package.json +21 -0
  1802. claude_code_tools/codex_bridge_mcp.py +0 -333
  1803. claude_code_tools-0.2.0.dist-info/METADATA +0 -495
  1804. claude_code_tools-0.2.0.dist-info/RECORD +0 -22
  1805. {claude_code_tools-0.2.0.dist-info → claude_code_tools-1.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -18,11 +18,58 @@ import json
18
18
  import os
19
19
  import re
20
20
  import shlex
21
- import subprocess
22
21
  import sys
22
+ import time
23
+ import termios
24
+ import tty
23
25
  from datetime import datetime
24
26
  from pathlib import Path
25
- from typing import Optional
27
+ from typing import Optional, Tuple
28
+
29
+ from claude_code_tools.session_menu import (
30
+ show_action_menu as menu_show_action_menu,
31
+ show_resume_submenu as menu_show_resume_submenu,
32
+ prompt_suppress_options as menu_prompt_suppress_options,
33
+ )
34
+ from claude_code_tools.node_menu_ui import run_node_menu_ui
35
+
36
+
37
+ def _read_key() -> str:
38
+ """Read a single keypress (Enter/Esc)."""
39
+ fd = sys.stdin.fileno()
40
+ old = termios.tcgetattr(fd)
41
+ try:
42
+ tty.setcbreak(fd)
43
+ ch = sys.stdin.read(1)
44
+ finally:
45
+ termios.tcsetattr(fd, termios.TCSADRAIN, old)
46
+ return ch
47
+
48
+
49
+ def prompt_post_action() -> str:
50
+ """After non-launch actions: Enter exits, Esc returns to menu."""
51
+ print("\n[Action complete] Press Enter to exit, or Esc to return to menu", file=sys.stderr)
52
+ ch = _read_key()
53
+ if ch == "\x1b":
54
+ return "back"
55
+ return "exit"
56
+ from claude_code_tools.trim_session import (
57
+ trim_and_create_session,
58
+ is_trimmed_session,
59
+ get_session_derivation_type,
60
+ )
61
+ from claude_code_tools.smart_trim_core import (
62
+ identify_trimmable_lines_cli,
63
+ is_claude_cli_available,
64
+ )
65
+ from claude_code_tools.smart_trim import trim_lines
66
+ from claude_code_tools.session_utils import (
67
+ get_codex_home,
68
+ get_session_uuid,
69
+ format_session_id_display,
70
+ filter_sessions_by_time,
71
+ )
72
+ from claude_code_tools.node_menu_ui import run_find_options_ui
26
73
 
27
74
  try:
28
75
  from rich.console import Console
@@ -32,14 +79,6 @@ try:
32
79
  except ImportError:
33
80
  RICH_AVAILABLE = False
34
81
 
35
-
36
- def get_codex_home(custom_home: Optional[str] = None) -> Path:
37
- """Get the Codex home directory."""
38
- if custom_home:
39
- return Path(custom_home).expanduser()
40
- return Path.home() / ".codex"
41
-
42
-
43
82
  def extract_session_id_from_filename(filename: str) -> Optional[str]:
44
83
  """
45
84
  Extract session ID from Codex session filename.
@@ -112,57 +151,92 @@ def search_keywords_in_file(
112
151
  Search for keywords in a Codex session file.
113
152
 
114
153
  Returns: (found, line_count, preview)
115
- - found: True if all keywords found (case-insensitive AND logic)
154
+ - found: True if all keywords found (case-insensitive AND logic), or True if no keywords
116
155
  - line_count: total lines in file
117
156
  - preview: best user message content (skips system messages)
118
157
  """
158
+ # If no keywords, match all files
159
+ if not keywords:
160
+ msg_count = 0
161
+ last_message = None # Tuple of (type_prefix, content)
162
+ try:
163
+ with open(session_file, "r", encoding="utf-8") as f:
164
+ for line in f:
165
+ if not line.strip():
166
+ continue
167
+ try:
168
+ entry = json.loads(line)
169
+ # Only count and extract user/assistant messages
170
+ if entry.get("type") == "response_item":
171
+ role = entry.get("payload", {}).get("role")
172
+ if role in ("user", "assistant"):
173
+ msg_count += 1
174
+ content = entry.get("payload", {}).get("content", [])
175
+ if isinstance(content, list) and len(content) > 0:
176
+ first_item = content[0]
177
+ if isinstance(first_item, dict):
178
+ text = first_item.get("text", "")
179
+ if text and not is_system_message(text):
180
+ cleaned = text[:400].replace("\n", " ").strip()
181
+ type_prefix = f"[{role}]"
182
+ if len(cleaned) > 20:
183
+ last_message = (type_prefix, cleaned)
184
+ elif last_message is None:
185
+ last_message = (type_prefix, cleaned)
186
+ except json.JSONDecodeError:
187
+ continue
188
+ preview = f"{last_message[0]} {last_message[1]}" if last_message else None
189
+ return True, msg_count, preview
190
+ except (OSError, IOError):
191
+ return False, 0, None
192
+
119
193
  keywords_lower = [k.lower() for k in keywords]
120
194
  found_keywords = set()
121
- line_count = 0
122
- last_user_message = None # Keep track of the LAST user message
195
+ msg_count = 0
196
+ last_message = None # Tuple of (type_prefix, content)
123
197
 
124
198
  try:
125
199
  with open(session_file, "r", encoding="utf-8") as f:
126
200
  for line in f:
127
- line_count += 1
128
201
  if not line.strip():
129
202
  continue
130
203
 
204
+ # Search for keywords in all text content
205
+ line_lower = line.lower()
206
+ for kw in keywords_lower:
207
+ if kw in line_lower:
208
+ found_keywords.add(kw)
209
+
131
210
  try:
132
211
  entry = json.loads(line)
133
212
 
134
- # Extract user messages (skip system messages)
135
- # Keep updating to get the LAST one
136
- if (
137
- entry.get("type") == "response_item"
138
- and entry.get("payload", {}).get("role") == "user"
139
- ):
140
- content = entry.get("payload", {}).get("content", [])
141
- if isinstance(content, list) and len(content) > 0:
142
- first_item = content[0]
143
- if isinstance(first_item, dict):
144
- text = first_item.get("text", "")
145
- if text and not is_system_message(text):
146
- # Keep updating with latest message
147
- cleaned = text[:400].replace("\n", " ").strip()
148
- # Only keep if it's substantial (>20 chars)
149
- if len(cleaned) > 20:
150
- last_user_message = cleaned
151
- elif last_user_message is None:
152
- # Keep even short messages if no better option
153
- last_user_message = cleaned
154
-
155
- # Search for keywords in all text content
156
- line_lower = line.lower()
157
- for kw in keywords_lower:
158
- if kw in line_lower:
159
- found_keywords.add(kw)
213
+ # Only count and extract user/assistant messages
214
+ if entry.get("type") == "response_item":
215
+ role = entry.get("payload", {}).get("role")
216
+ if role in ("user", "assistant"):
217
+ msg_count += 1
218
+ content = entry.get("payload", {}).get("content", [])
219
+ if isinstance(content, list) and len(content) > 0:
220
+ first_item = content[0]
221
+ if isinstance(first_item, dict):
222
+ text = first_item.get("text", "")
223
+ if text and not is_system_message(text):
224
+ # Keep updating with latest message
225
+ cleaned = text[:400].replace("\n", " ").strip()
226
+ type_prefix = f"[{role}]"
227
+ # Only keep if it's substantial (>20 chars)
228
+ if len(cleaned) > 20:
229
+ last_message = (type_prefix, cleaned)
230
+ elif last_message is None:
231
+ # Keep even short messages if no better option
232
+ last_message = (type_prefix, cleaned)
160
233
 
161
234
  except json.JSONDecodeError:
162
235
  continue
163
236
 
164
237
  all_found = len(found_keywords) == len(keywords_lower)
165
- return all_found, line_count, last_user_message
238
+ preview = f"{last_message[0]} {last_message[1]}" if last_message else None
239
+ return all_found, msg_count, preview
166
240
 
167
241
  except (OSError, IOError):
168
242
  return False, 0, None
@@ -173,6 +247,10 @@ def find_sessions(
173
247
  keywords: list[str],
174
248
  num_matches: int = 10,
175
249
  global_search: bool = False,
250
+ original_only: bool = False,
251
+ no_sub: bool = False,
252
+ no_trim: bool = False,
253
+ no_cont: bool = False,
176
254
  ) -> list[dict]:
177
255
  """
178
256
  Find Codex sessions matching keywords.
@@ -182,9 +260,13 @@ def find_sessions(
182
260
  keywords: List of keywords to search for
183
261
  num_matches: Maximum number of results to return
184
262
  global_search: If False, filter to current directory only
263
+ original_only: If True, show only original sessions (excludes trimmed and rollover)
264
+ no_sub: If True, exclude sub-agent sessions (Note: Codex doesn't have sub-agents)
265
+ no_trim: If True, exclude trimmed sessions
266
+ no_cont: If True, exclude rollover sessions (internally "continued")
185
267
 
186
268
  Returns list of dicts with: session_id, project, branch, date,
187
- lines, preview, cwd, file_path
269
+ lines, preview, cwd, file_path, is_trimmed
188
270
  """
189
271
  sessions_dir = codex_home / "sessions"
190
272
  if not sessions_dir.exists():
@@ -242,19 +324,43 @@ def find_sessions(
242
324
  if current_cwd and metadata["cwd"] != current_cwd:
243
325
  continue
244
326
 
245
- # Parse timestamp
246
- timestamp_str = metadata["timestamp"]
247
- if timestamp_str:
327
+ # Check if session is trimmed/continued
328
+ is_trimmed = is_trimmed_session(session_file)
329
+ derivation_type = get_session_derivation_type(session_file) if is_trimmed else None
330
+
331
+ # Apply filters (original_only overrides individual filters)
332
+ # Note: Codex doesn't have sub-agent sessions, so no_sub has no effect
333
+ if original_only:
334
+ # Original only: exclude trimmed and continued
335
+ if is_trimmed:
336
+ continue
337
+ else:
338
+ # Individual filters
339
+ if no_trim and derivation_type == "trimmed":
340
+ continue
341
+ if no_cont and derivation_type == "continued":
342
+ continue
343
+
344
+ # Get timestamps - prefer JSON metadata for create_time
345
+ stat = session_file.stat()
346
+ mod_time = stat.st_mtime
347
+ # Use session timestamp from metadata if available
348
+ if metadata.get("timestamp"):
248
349
  try:
249
- dt = datetime.fromisoformat(
250
- timestamp_str.replace("Z", "+00:00")
251
- )
252
- date_str = dt.strftime("%Y-%m-%d %H:%M")
253
- except ValueError:
254
- date_str = timestamp_str[:16]
350
+ ts = metadata["timestamp"]
351
+ # Parse ISO format (e.g., "2025-10-22T16:05:28.707Z")
352
+ if ts.endswith("Z"):
353
+ ts = ts[:-1] + "+00:00"
354
+ create_time = datetime.fromisoformat(ts).timestamp()
355
+ except (ValueError, TypeError):
356
+ create_time = getattr(stat, 'st_birthtime', stat.st_ctime)
255
357
  else:
256
- # Fallback to directory date
257
- date_str = f"{year_dir.name}-{month_dir.name}-{day_dir.name}"
358
+ create_time = getattr(stat, 'st_birthtime', stat.st_ctime)
359
+
360
+ # Format dates: "10/04 - 10/09 13:45"
361
+ create_date = datetime.fromtimestamp(create_time).strftime("%m/%d")
362
+ mod_date = datetime.fromtimestamp(mod_time).strftime("%m/%d %H:%M")
363
+ date_str = f"{create_date} - {mod_date}"
258
364
 
259
365
  matches.append(
260
366
  {
@@ -262,10 +368,13 @@ def find_sessions(
262
368
  "project": get_project_name(metadata["cwd"]),
263
369
  "branch": metadata["branch"] or "",
264
370
  "date": date_str,
371
+ "mod_time": mod_time, # For sorting
372
+ "create_time": create_time, # For date range display
265
373
  "lines": line_count,
266
374
  "preview": preview or "No preview",
267
375
  "cwd": metadata["cwd"],
268
376
  "file_path": str(session_file),
377
+ "is_trimmed": is_trimmed,
269
378
  }
270
379
  )
271
380
 
@@ -273,18 +382,19 @@ def find_sessions(
273
382
  if len(matches) >= num_matches * 3:
274
383
  break
275
384
 
276
- # Sort by date (reverse chronological) and limit
277
- matches.sort(key=lambda x: x["date"], reverse=True)
385
+ # Sort by modification time (newest first) and limit
386
+ matches.sort(key=lambda x: x["mod_time"], reverse=True)
278
387
  return matches[:num_matches]
279
388
 
280
389
 
281
390
  def display_interactive_ui(
282
391
  matches: list[dict],
283
- ) -> Optional[tuple[str, str]]:
392
+ keywords: list[str] = None,
393
+ ) -> Optional[dict]:
284
394
  """
285
395
  Display matches in interactive UI and get user selection.
286
396
 
287
- Returns: (session_id, cwd) or None if cancelled
397
+ Returns: selected match dict or None if cancelled
288
398
  """
289
399
  if not matches:
290
400
  print("No matching sessions found.")
@@ -292,19 +402,27 @@ def display_interactive_ui(
292
402
 
293
403
  if RICH_AVAILABLE:
294
404
  console = Console()
295
- table = Table(title="Codex Sessions", show_header=True)
405
+ title = f"Codex Sessions matching: {', '.join(keywords)}" if keywords else "All Codex Sessions"
406
+ table = Table(title=title, show_header=True)
296
407
  table.add_column("#", style="cyan", justify="right")
297
- table.add_column("Session ID", style="yellow", no_wrap=True)
408
+ table.add_column("Session ID", style="dim", no_wrap=True)
298
409
  table.add_column("Project", style="green")
299
410
  table.add_column("Branch", style="magenta")
300
- table.add_column("Date", style="blue")
411
+ table.add_column("Date-Range", style="blue")
301
412
  table.add_column("Lines", justify="right")
302
- table.add_column("Preview", style="dim", max_width=60, overflow="fold")
413
+ table.add_column("Last User Message", style="dim", max_width=60, overflow="fold")
303
414
 
304
415
  for i, match in enumerate(matches, 1):
416
+ # Format session ID with annotations using centralized helper
417
+ session_id_display = format_session_id_display(
418
+ match["session_id"],
419
+ is_trimmed=match.get("is_trimmed", False),
420
+ truncate_length=16,
421
+ )
422
+
305
423
  table.add_row(
306
424
  str(i),
307
- match["session_id"][:16] + "...",
425
+ session_id_display,
308
426
  match["project"],
309
427
  match["branch"],
310
428
  match["date"],
@@ -313,41 +431,523 @@ def display_interactive_ui(
313
431
  )
314
432
 
315
433
  console.print(table)
434
+
435
+ # Show footnote if any sessions are trimmed
436
+ has_trimmed = any(m.get("is_trimmed", False) for m in matches)
437
+ if has_trimmed:
438
+ console.print("[dim](t) = Trimmed session[/dim]")
316
439
  else:
317
440
  # Fallback to plain text
318
441
  print("\nMatching Codex Sessions:")
319
442
  print("-" * 80)
320
443
  for i, match in enumerate(matches, 1):
321
- print(f"{i}. {match['session_id'][:16]}...")
444
+ # Format session ID with annotations using centralized helper
445
+ session_id_display = format_session_id_display(
446
+ match['session_id'],
447
+ is_trimmed=match.get("is_trimmed", False),
448
+ truncate_length=16,
449
+ )
450
+
451
+ print(f"{i}. {session_id_display}")
322
452
  print(f" Project: {match['project']}")
323
453
  print(f" Branch: {match['branch']}")
324
454
  print(f" Date: {match['date']}")
325
455
  print(f" Preview: {match['preview'][:60]}...")
326
456
  print()
327
457
 
458
+ # Show footnote if any sessions are trimmed
459
+ has_trimmed = any(m.get("is_trimmed", False) for m in matches)
460
+ if has_trimmed:
461
+ print("(t) = Trimmed session")
462
+
328
463
  # Get user selection
329
464
  if len(matches) == 1:
330
465
  print(f"\nAuto-selecting only match: {matches[0]['session_id'][:16]}...")
331
- return matches[0]["session_id"], matches[0]["cwd"]
466
+ return matches[0]
332
467
 
333
468
  try:
334
469
  choice = input(
335
- "\nEnter number to resume session (or Enter to cancel): "
470
+ "\nEnter number to select session (or Enter to cancel): "
336
471
  ).strip()
337
472
  if not choice:
473
+ print("Cancelled.")
338
474
  return None
339
475
 
340
476
  idx = int(choice) - 1
341
477
  if 0 <= idx < len(matches):
342
- return matches[idx]["session_id"], matches[idx]["cwd"]
478
+ return matches[idx]
343
479
  else:
344
480
  print("Invalid selection.")
345
481
  return None
346
- except (ValueError, KeyboardInterrupt):
482
+ except ValueError:
483
+ print("Invalid input.")
484
+ return None
485
+ except KeyboardInterrupt:
347
486
  print("\nCancelled.")
348
487
  return None
349
488
 
350
489
 
490
+ def show_resume_submenu() -> Optional[str]:
491
+ """Show resume options submenu."""
492
+ return menu_show_resume_submenu(stderr_mode=False)
493
+
494
+
495
+ def prompt_suppress_options() -> Optional[Tuple[Optional[str], int, Optional[int]]]:
496
+ """
497
+ Prompt user for suppress-tool-results options.
498
+
499
+ Returns:
500
+ Tuple of (tools, threshold, trim_assistant_messages) or None if cancelled
501
+ """
502
+ return menu_prompt_suppress_options(stderr_mode=False)
503
+
504
+
505
+ def append_to_codex_history(
506
+ session_id: str, first_user_msg: str, codex_home: Path
507
+ ) -> None:
508
+ """
509
+ Append session to Codex history.jsonl file.
510
+
511
+ Args:
512
+ session_id: Session UUID
513
+ first_user_msg: First user message text
514
+ codex_home: Codex home directory
515
+ """
516
+ history_file = codex_home / "history.jsonl"
517
+ history_entry = {
518
+ "session_id": session_id,
519
+ "ts": int(time.time()),
520
+ "text": first_user_msg[:500], # Limit to 500 chars
521
+ }
522
+
523
+ with open(history_file, "a") as f:
524
+ f.write(json.dumps(history_entry) + "\n")
525
+
526
+
527
+ def extract_first_user_message_codex(session_file: Path) -> str:
528
+ """Extract first user message from Codex session file."""
529
+ with open(session_file, "r") as f:
530
+ for line in f:
531
+ try:
532
+ data = json.loads(line)
533
+ except json.JSONDecodeError:
534
+ continue
535
+
536
+ if data.get("type") == "response_item":
537
+ payload = data.get("payload", {})
538
+ if payload.get("type") == "message":
539
+ role = payload.get("role")
540
+ if role == "user":
541
+ return payload.get("text", "")
542
+
543
+ return "Suppressed session"
544
+
545
+
546
+ def handle_suppress_resume_codex(
547
+ match: dict,
548
+ tools: Optional[str],
549
+ threshold: int,
550
+ trim_assistant_messages: Optional[int],
551
+ codex_home: Path,
552
+ ) -> str | None:
553
+ """
554
+ Suppress tool results and resume Codex session.
555
+
556
+ Returns:
557
+ 'back' if user wants to go back to menu, None otherwise.
558
+ """
559
+ session_file = Path(match["file_path"])
560
+
561
+ print(f"\n🔧 Trimming session...")
562
+
563
+ # Parse tools into set if provided
564
+ target_tools = None
565
+ if tools:
566
+ target_tools = {tool.strip().lower() for tool in tools.split(",")}
567
+
568
+ try:
569
+ # Use helper function to trim and create new session
570
+ result = trim_and_create_session(
571
+ "codex",
572
+ session_file,
573
+ target_tools,
574
+ threshold,
575
+ trim_assistant_messages=trim_assistant_messages
576
+ )
577
+ except Exception as e:
578
+ print(f"❌ Error trimming session: {e}")
579
+ return None
580
+
581
+ # Check if nothing to trim (savings below threshold)
582
+ from claude_code_tools.node_menu_ui import run_trim_confirm_ui
583
+ if result.get("nothing_to_trim"):
584
+ print(f" Savings too small ({result['tokens_saved']} tokens)")
585
+ action = run_trim_confirm_ui(
586
+ nothing_to_trim=True,
587
+ original_session_id=match["session_id"],
588
+ )
589
+ if action == 'resume':
590
+ resume_session(match["session_id"], match["cwd"])
591
+ return None
592
+ return 'back'
593
+
594
+ new_session_id = result["session_id"]
595
+ new_session_file = Path(result["output_file"])
596
+
597
+ # Calculate total lines trimmed for confirmation UI
598
+ total_trimmed = result['num_tools_trimmed'] + result['num_assistant_trimmed']
599
+
600
+ # Show confirmation UI
601
+ action = run_trim_confirm_ui(
602
+ new_session_id=new_session_id,
603
+ lines_trimmed=total_trimmed,
604
+ tokens_saved=result['tokens_saved'],
605
+ output_file=str(new_session_file),
606
+ )
607
+
608
+ if action == 'resume':
609
+ # Get first user message from original session
610
+ first_msg = extract_first_user_message_codex(session_file)
611
+
612
+ # Append to history
613
+ append_to_codex_history(new_session_id, first_msg, codex_home)
614
+
615
+ # Resume the new session
616
+ resume_session(new_session_id, match["cwd"])
617
+ return None
618
+ elif action == 'delete':
619
+ # Delete the new session file and go back to menu
620
+ new_session_file.unlink(missing_ok=True)
621
+ print(f"\n🗑️ Deleted session file: {new_session_file.name}")
622
+ return 'back'
623
+ else:
624
+ # Cancel (escape) - keep file, go back to menu
625
+ print(f"\n📁 Session file kept: {new_session_file}")
626
+ print(f" Session ID: {new_session_id}")
627
+ return 'back'
628
+
629
+
630
+ def handle_smart_trim_resume_codex(
631
+ match: dict,
632
+ codex_home: Path,
633
+ custom_instructions: Optional[str] = None,
634
+ ) -> str | None:
635
+ """
636
+ Smart trim session using parallel agents and resume Codex session.
637
+
638
+ Args:
639
+ match: Match dict with session info
640
+ codex_home: Codex home directory
641
+ custom_instructions: Optional custom instructions for the trim agents
642
+
643
+ Returns:
644
+ 'back' if user wants to go back to menu, None otherwise.
645
+ """
646
+ import uuid
647
+ from datetime import datetime
648
+
649
+ session_file = Path(match["file_path"])
650
+
651
+ # Determine which CLI to use: prefer Claude if available, else Codex
652
+ if is_claude_cli_available():
653
+ cli_type = "claude"
654
+ print(f"\n🤖 Smart trimming session using Claude CLI...")
655
+ else:
656
+ cli_type = "codex"
657
+ print(f"\n🤖 Smart trimming session using Codex CLI...")
658
+
659
+ if custom_instructions:
660
+ print(f" Instructions: {custom_instructions[:60]}...")
661
+ print(f" This may take a minute as the agent analyzes the session...")
662
+
663
+ try:
664
+ # Identify trimmable lines using CLI
665
+ trimmable = identify_trimmable_lines_cli(
666
+ session_file,
667
+ exclude_types=[],
668
+ preserve_recent=10,
669
+ custom_instructions=custom_instructions,
670
+ cli_type=cli_type,
671
+ )
672
+
673
+ if not trimmable:
674
+ # Show confirmation for "nothing to trim" case
675
+ from claude_code_tools.node_menu_ui import run_trim_confirm_ui
676
+ action = run_trim_confirm_ui(
677
+ nothing_to_trim=True,
678
+ original_session_id=match["session_id"],
679
+ )
680
+
681
+ if action == 'resume':
682
+ resume_session(match["session_id"], match["cwd"])
683
+ return None
684
+ # 'back' or 'cancel' - return signal to go back to menu
685
+ return 'back'
686
+
687
+ print(f" Found {len(trimmable)} lines to trim")
688
+
689
+ # Extract line indices and descriptions from verbose tuples
690
+ # trimmable is list of (line_idx, rationale, description) tuples
691
+ line_indices = [item[0] for item in trimmable]
692
+ descriptions = {
693
+ item[0]: item[2] for item in trimmable if len(item) > 2 and item[2]
694
+ }
695
+
696
+ # Generate new session ID (UUID only) and filename with Codex format
697
+ # New session goes in today's date folder (YYYY/MM/DD)
698
+ now = datetime.now()
699
+ timestamp = now.strftime("%Y-%m-%dT%H-%M-%S")
700
+ date_path = now.strftime("%Y/%m/%d")
701
+ new_session_id = str(uuid.uuid4())
702
+
703
+ # Find sessions root by going up from input file (sessions/YYYY/MM/DD/file.jsonl)
704
+ sessions_root = session_file.parent.parent.parent.parent
705
+ output_dir = sessions_root / date_path
706
+ output_dir.mkdir(parents=True, exist_ok=True)
707
+ output_file = output_dir / f"rollout-{timestamp}-{new_session_id}.jsonl"
708
+
709
+ # Perform trimming
710
+ stats = trim_lines(
711
+ session_file, line_indices, output_file, descriptions=descriptions
712
+ )
713
+
714
+ # Check if savings are worth it (minimum 300 tokens)
715
+ MIN_TOKEN_SAVINGS = 300
716
+ if stats['tokens_saved'] < MIN_TOKEN_SAVINGS:
717
+ # Not worth trimming - delete output and show nothing to trim
718
+ output_file.unlink(missing_ok=True)
719
+ print(f" Savings too small ({stats['tokens_saved']} tokens < {MIN_TOKEN_SAVINGS})")
720
+ from claude_code_tools.node_menu_ui import run_trim_confirm_ui
721
+ action = run_trim_confirm_ui(
722
+ nothing_to_trim=True,
723
+ original_session_id=match["session_id"],
724
+ )
725
+ if action == 'resume':
726
+ resume_session(match["session_id"], match["cwd"])
727
+ return None
728
+ return 'back'
729
+
730
+ # Show confirmation UI
731
+ from claude_code_tools.node_menu_ui import run_trim_confirm_ui
732
+ action = run_trim_confirm_ui(
733
+ new_session_id=new_session_id,
734
+ lines_trimmed=stats['num_lines_trimmed'],
735
+ tokens_saved=stats['tokens_saved'],
736
+ output_file=str(output_file),
737
+ )
738
+
739
+ if action == 'resume':
740
+ # Get first user message from original session
741
+ first_msg = extract_first_user_message_codex(session_file)
742
+
743
+ # Append to history
744
+ append_to_codex_history(new_session_id, first_msg, codex_home)
745
+
746
+ # Resume the new session
747
+ resume_session(new_session_id, match["cwd"])
748
+ return None
749
+ elif action == 'delete':
750
+ # Delete the new session file and go back to menu
751
+ output_file.unlink(missing_ok=True)
752
+ print(f"\n🗑️ Deleted session file: {output_file.name}")
753
+ return 'back'
754
+ else:
755
+ # Cancel (escape) - keep file, go back to menu
756
+ print(f"\n📁 Session file kept: {output_file}")
757
+ print(f" Session ID: {new_session_id}")
758
+ return 'back'
759
+
760
+ except Exception as e:
761
+ print(f"❌ Error during smart trim: {e}")
762
+ import traceback
763
+ traceback.print_exc()
764
+ return None
765
+
766
+
767
+ def handle_export_session(session_file_path: str, dest_override: str | None = None) -> None:
768
+ """Export Codex session to text file."""
769
+ from claude_code_tools.export_codex_session import export_session_to_markdown as do_export
770
+ from datetime import datetime
771
+
772
+ # Generate default export path using session's project directory
773
+ session_file = Path(session_file_path)
774
+ session_id = get_session_uuid(session_file.name)
775
+ today = datetime.now().strftime("%Y%m%d")
776
+
777
+ # Infer project directory from session metadata
778
+ metadata = extract_session_metadata(session_file)
779
+ if metadata and metadata.get("cwd"):
780
+ output_dir = Path(metadata["cwd"]) / "exported-sessions"
781
+ else:
782
+ output_dir = Path.cwd() / "exported-sessions"
783
+
784
+ default_path = output_dir / f"{today}-codex-session-{session_id}.txt"
785
+
786
+ print(f"\nDefault export path: {default_path}")
787
+ if dest_override is None:
788
+ dest = input("Path (or Enter for default): ").strip()
789
+ if not dest:
790
+ dest_path = default_path
791
+ else:
792
+ dest_path = Path(dest).expanduser()
793
+ else:
794
+ dest_path = Path(dest_override).expanduser()
795
+
796
+ # Force .txt extension
797
+ if dest_path.suffix != ".txt":
798
+ # Strip any existing extension and add .txt
799
+ dest_path = dest_path.with_suffix(".txt")
800
+
801
+ # Create parent directories if needed
802
+ dest_path.parent.mkdir(parents=True, exist_ok=True)
803
+
804
+ # Export to text file
805
+ try:
806
+ with open(dest_path, 'w') as f:
807
+ stats = do_export(Path(session_file_path), f, verbose=False)
808
+
809
+ print(f"\n✅ Export complete!")
810
+ print(f" User messages: {stats['user_messages']}")
811
+ print(f" Assistant messages: {stats['assistant_messages']}")
812
+ print(f" Tool calls: {stats['tool_calls']}")
813
+ print(f" Tool results: {stats['tool_results']}")
814
+ print(f" Skipped items: {stats['skipped']}")
815
+ print(f"\n📄 Exported to: {dest_path}")
816
+ except Exception as e:
817
+ print(f"\n❌ Error exporting session: {e}")
818
+
819
+
820
+ def show_action_menu(match: dict) -> Optional[str]:
821
+ """
822
+ Show action menu for selected session.
823
+
824
+ Returns: action choice ('resume', 'path', 'copy', 'clone', 'export') or None if cancelled
825
+ """
826
+ return menu_show_action_menu(
827
+ session_id=match['session_id'],
828
+ agent="codex",
829
+ project_name=match['project'],
830
+ git_branch=match.get('branch'),
831
+ is_sidechain=False,
832
+ stderr_mode=False,
833
+ )
834
+
835
+
836
+ def copy_session_file(file_path: str, dest_override: str | None = None, silent: bool = False) -> None:
837
+ """Copy session file to user-specified file or directory."""
838
+ try:
839
+ if dest_override is None:
840
+ dest = input("\nEnter destination file or directory path: ").strip()
841
+ if not dest:
842
+ print("Cancelled.")
843
+ return
844
+ else:
845
+ dest = dest_override
846
+
847
+ dest_path = Path(dest).expanduser()
848
+ source = Path(file_path)
849
+
850
+ # Determine if destination is a directory or file
851
+ if dest_path.exists():
852
+ if dest_path.is_dir():
853
+ # Copy into directory with original filename
854
+ dest_file = dest_path / source.name
855
+ else:
856
+ # Copy to specified file
857
+ dest_file = dest_path
858
+ else:
859
+ # Destination doesn't exist - check if it looks like a directory
860
+ if dest.endswith('/') or dest.endswith(os.sep):
861
+ # Treat as directory - create it
862
+ create = input(f"Directory {dest_path} does not exist. Create it? [y/N]: ").strip().lower()
863
+ if create in ('y', 'yes'):
864
+ dest_path.mkdir(parents=True, exist_ok=True)
865
+ dest_file = dest_path / source.name
866
+ else:
867
+ print("Cancelled.")
868
+ return
869
+ else:
870
+ # Treat as file - create parent directory if needed
871
+ parent = dest_path.parent
872
+ if not parent.exists():
873
+ create = input(f"Parent directory {parent} does not exist. Create it? [y/N]: ").strip().lower()
874
+ if create in ('y', 'yes'):
875
+ parent.mkdir(parents=True, exist_ok=True)
876
+ else:
877
+ print("Cancelled.")
878
+ return
879
+ dest_file = dest_path
880
+
881
+ import shutil
882
+ shutil.copy2(source, dest_file)
883
+ if not silent:
884
+ print(f"\nCopied to: {dest_file}")
885
+
886
+ except KeyboardInterrupt:
887
+ print("\nCancelled.")
888
+ except Exception as e:
889
+ print(f"\nError copying file: {e}")
890
+
891
+
892
+ def clone_session(
893
+ file_path: str,
894
+ session_id: str,
895
+ cwd: str,
896
+ shell_mode: bool = False,
897
+ codex_home: Optional[str] = None
898
+ ) -> None:
899
+ """Clone a Codex session to a new file with new UUID and resume it."""
900
+ import shutil
901
+ import uuid
902
+ import re
903
+
904
+ source_path = Path(file_path)
905
+
906
+ if not source_path.exists():
907
+ print(f"\nError: Session file not found: {source_path}")
908
+ return
909
+
910
+ # Extract the timestamp part from filename
911
+ # Format: rollout-YYYY-MM-DDTHH-MM-SS-<SESSION_ID>.jsonl
912
+ filename = source_path.name
913
+ match = re.match(r"(rollout-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-)(.+)(\.jsonl)", filename)
914
+
915
+ if not match:
916
+ print(f"\nError: Invalid Codex session filename format: {filename}")
917
+ return
918
+
919
+ timestamp_prefix = match.group(1) # rollout-YYYY-MM-DDTHH-MM-SS-
920
+ suffix = match.group(3) # .jsonl
921
+
922
+ # Generate new UUID
923
+ new_session_id = str(uuid.uuid4())
924
+
925
+ # Create new filename with same timestamp but new UUID
926
+ new_filename = f"{timestamp_prefix}{new_session_id}{suffix}"
927
+ dest_path = source_path.parent / new_filename
928
+
929
+ try:
930
+ # Copy the file
931
+ shutil.copy2(source_path, dest_path)
932
+
933
+ # Update session ID in session_meta to match the new filename UUID
934
+ from claude_code_tools.trim_session import update_session_id_in_file
935
+ update_session_id_in_file(dest_path, new_session_id, agent="codex")
936
+
937
+ if not shell_mode:
938
+ print(f"\nCloned session:")
939
+ print(f" Original: {session_id}")
940
+ print(f" New: {new_session_id}")
941
+ print(f"\nResuming cloned session...")
942
+
943
+ # Resume the new cloned session
944
+ resume_session(new_session_id, cwd, shell_mode=shell_mode)
945
+
946
+ except Exception as e:
947
+ print(f"\nError cloning session: {e}")
948
+ return
949
+
950
+
351
951
  def resume_session(
352
952
  session_id: str, cwd: str, shell_mode: bool = False
353
953
  ) -> None:
@@ -386,6 +986,74 @@ def resume_session(
386
986
  sys.exit(1)
387
987
 
388
988
 
989
+ def create_action_handler(shell_mode: bool = False, codex_home: Optional[Path] = None, nonlaunch_flag: Optional[dict] = None):
990
+ """Create an action handler for the TUI."""
991
+ def action_handler(session, action: str, kwargs: Optional[dict] = None) -> str | None:
992
+ """Handle actions from the TUI - session can be tuple or dict.
993
+
994
+ Returns:
995
+ 'back' if the action wants to return to resume menu, None otherwise.
996
+ """
997
+ kwargs = kwargs or {}
998
+ # Ensure session is a dict
999
+ if not isinstance(session, dict):
1000
+ # Shouldn't happen in codex find, but handle gracefully
1001
+ session = {"session_id": str(session)}
1002
+
1003
+ # Handle actions
1004
+ if action == "resume":
1005
+ resume_session(
1006
+ session["session_id"],
1007
+ session["cwd"],
1008
+ shell_mode
1009
+ )
1010
+ elif action == "suppress_resume":
1011
+ tools = kwargs.get("tools")
1012
+ threshold = kwargs.get("threshold")
1013
+ trim_assistant = kwargs.get("trim_assistant")
1014
+ if tools is None and threshold is None and trim_assistant is None:
1015
+ options = prompt_suppress_options()
1016
+ if not options:
1017
+ return None
1018
+ tools, threshold, trim_assistant = options
1019
+ return handle_suppress_resume_codex(
1020
+ session, tools, threshold or 500, trim_assistant, codex_home
1021
+ )
1022
+ elif action == "smart_trim_resume":
1023
+ # Smart trim using parallel agents
1024
+ return handle_smart_trim_resume_codex(session, codex_home)
1025
+ elif action == "path":
1026
+ if nonlaunch_flag is not None:
1027
+ nonlaunch_flag["done"] = True
1028
+ nonlaunch_flag["session_id"] = session.get("session_id")
1029
+ elif action == "copy":
1030
+ if nonlaunch_flag is not None:
1031
+ nonlaunch_flag["done"] = True
1032
+ nonlaunch_flag["session_id"] = session.get("session_id")
1033
+ elif action == "clone":
1034
+ clone_session(
1035
+ session["file_path"],
1036
+ session["session_id"],
1037
+ session["cwd"],
1038
+ shell_mode=shell_mode
1039
+ )
1040
+ elif action == "export":
1041
+ handle_export_session(session["file_path"])
1042
+ if nonlaunch_flag is not None:
1043
+ nonlaunch_flag["done"] = True
1044
+ nonlaunch_flag["session_id"] = session.get("session_id")
1045
+ elif action == "continue":
1046
+ from claude_code_tools.session_utils import continue_with_options
1047
+ continue_with_options(
1048
+ session["file_path"],
1049
+ "codex",
1050
+ claude_home=None,
1051
+ codex_home=str(codex_home) if codex_home else None
1052
+ )
1053
+
1054
+ return action_handler
1055
+
1056
+
389
1057
  def main():
390
1058
  """Main entry point."""
391
1059
  parser = argparse.ArgumentParser(
@@ -396,13 +1064,20 @@ Examples:
396
1064
  find-codex-session "langroid,MCP" # Current project only
397
1065
  find-codex-session "error,debugging" -g # All projects
398
1066
  find-codex-session "keywords" -n 5 # Limit results
399
- fcs-codex "keywords" --shell # Via shell wrapper
1067
+
1068
+ To persist directory changes when resuming sessions:
1069
+ Add this to your shell config (.bashrc/.zshrc):
1070
+ fcs-codex() { eval $(find-codex-session --shell "$@"); }
1071
+
1072
+ Then use: fcs-codex "keyword" -g
400
1073
  """,
401
1074
  )
402
1075
 
403
1076
  parser.add_argument(
404
1077
  "keywords",
405
- help="Comma-separated keywords to search (AND logic)",
1078
+ nargs='?',
1079
+ default="",
1080
+ help="Comma-separated keywords to search (AND logic). If omitted, shows all sessions.",
406
1081
  )
407
1082
  parser.add_argument(
408
1083
  "-g",
@@ -427,14 +1102,111 @@ Examples:
427
1102
  "--codex-home",
428
1103
  help="Custom Codex home directory (default: ~/.codex)",
429
1104
  )
1105
+ parser.add_argument(
1106
+ "--original",
1107
+ action="store_true",
1108
+ help="Show only original sessions (excludes trimmed and continued sessions)",
1109
+ )
1110
+ parser.add_argument(
1111
+ "--no-sub",
1112
+ action="store_true",
1113
+ help="Exclude sub-agent sessions (Note: Codex doesn't have sub-agents)",
1114
+ )
1115
+ parser.add_argument(
1116
+ "--no-trim",
1117
+ action="store_true",
1118
+ help="Exclude trimmed sessions from results",
1119
+ )
1120
+ parser.add_argument(
1121
+ "--no-roll",
1122
+ dest="no_cont", # Keep internal name for compatibility
1123
+ action="store_true",
1124
+ help="Exclude rollover sessions from results",
1125
+ )
1126
+ parser.add_argument(
1127
+ "--simple-ui",
1128
+ dest="simple_ui",
1129
+ action="store_true",
1130
+ help="Use simple Rich table UI instead of Node interactive UI",
1131
+ )
1132
+ parser.add_argument(
1133
+ "--min-lines",
1134
+ type=int,
1135
+ default=0,
1136
+ help="Only show sessions with at least this many lines (default: 0 = no minimum)",
1137
+ )
1138
+ parser.add_argument(
1139
+ "--before",
1140
+ type=str,
1141
+ help="Only show sessions modified before this time (inclusive). "
1142
+ "Formats: YYYYMMDD, YYYY-MM-DD, MM/DD/YY, with optional T or space + HH:MM:SS",
1143
+ )
1144
+ parser.add_argument(
1145
+ "--after",
1146
+ type=str,
1147
+ help="Only show sessions modified after this time (inclusive). "
1148
+ "Formats: YYYYMMDD, YYYY-MM-DD, MM/DD/YY, with optional T or space + HH:MM:SS",
1149
+ )
1150
+ parser.add_argument(
1151
+ "--no-ui",
1152
+ action="store_true",
1153
+ help="Skip interactive options menu and run search directly with CLI args",
1154
+ )
430
1155
 
431
1156
  args = parser.parse_args()
432
1157
 
1158
+ # Show interactive options UI unless --no-ui or --simple-ui
1159
+ if not args.no_ui and not args.simple_ui:
1160
+ initial_options = {
1161
+ "keywords": args.keywords or "",
1162
+ "global": args.global_search,
1163
+ "num_matches": args.num_matches,
1164
+ "original": args.original,
1165
+ "no_trim": args.no_trim,
1166
+ "no_cont": args.no_cont,
1167
+ "min_lines": args.min_lines or "",
1168
+ "before": args.before or "",
1169
+ "after": args.after or "",
1170
+ }
1171
+ opts = run_find_options_ui(initial_options, variant="find-codex")
1172
+ if opts is None:
1173
+ sys.exit(0)
1174
+ # Update args with user's selections
1175
+ args.keywords = opts.get("keywords") or ""
1176
+ args.global_search = opts.get("global", False)
1177
+ args.num_matches = opts.get("num_matches", 10)
1178
+ args.original = opts.get("original", False)
1179
+ args.no_trim = opts.get("no_trim", False)
1180
+ args.no_cont = opts.get("no_cont", False)
1181
+ args.min_lines = opts.get("min_lines") or 0
1182
+ args.before = opts.get("before")
1183
+ args.after = opts.get("after")
1184
+
1185
+ # Build and display equivalent CLI command
1186
+ cmd_parts = ["aichat find-codex"]
1187
+ if args.keywords:
1188
+ cmd_parts.append(f'"{args.keywords}"')
1189
+ if args.global_search:
1190
+ cmd_parts.append("-g")
1191
+ if args.num_matches != 10:
1192
+ cmd_parts.append(f"-n {args.num_matches}")
1193
+ if args.original:
1194
+ cmd_parts.append("--original")
1195
+ if args.no_trim:
1196
+ cmd_parts.append("--no-trim")
1197
+ if args.no_cont:
1198
+ cmd_parts.append("--no-roll")
1199
+ if args.min_lines:
1200
+ cmd_parts.append(f"--min-lines {args.min_lines}")
1201
+ if args.before:
1202
+ cmd_parts.append(f"--before {args.before}")
1203
+ if args.after:
1204
+ cmd_parts.append(f"--after {args.after}")
1205
+ cmd_parts.append("--no-ui")
1206
+ print(f"\n→ {' '.join(cmd_parts)}\n", file=sys.stderr)
1207
+
433
1208
  # Parse keywords
434
- keywords = [k.strip() for k in args.keywords.split(",") if k.strip()]
435
- if not keywords:
436
- print("Error: No keywords provided", file=sys.stderr)
437
- sys.exit(1)
1209
+ keywords = [k.strip() for k in args.keywords.split(",") if k.strip()] if args.keywords else []
438
1210
 
439
1211
  # Get Codex home
440
1212
  codex_home = get_codex_home(args.codex_home)
@@ -442,16 +1214,111 @@ Examples:
442
1214
  print(f"Error: Codex home not found: {codex_home}", file=sys.stderr)
443
1215
  sys.exit(1)
444
1216
 
1217
+ # Display informational message about what session types are being shown
1218
+ if args.original:
1219
+ print("Showing: Original sessions only (excluding trimmed and rollover sessions)", file=sys.stderr)
1220
+ else:
1221
+ # Build list of excluded types (note: Codex doesn't have sub-agents)
1222
+ excluded_types = []
1223
+ if args.no_trim:
1224
+ excluded_types.append("trimmed")
1225
+ if args.no_cont:
1226
+ excluded_types.append("rollover")
1227
+
1228
+ if excluded_types:
1229
+ excluded_str = ", ".join(excluded_types)
1230
+ print(f"Showing: All sessions except {excluded_str}", file=sys.stderr)
1231
+ else:
1232
+ print("Showing: All session types (original, trimmed, and rollover)", file=sys.stderr)
1233
+ print("Tip: Use --no-trim or --no-roll to exclude specific types", file=sys.stderr)
1234
+ print(file=sys.stderr) # Blank line for readability
1235
+
445
1236
  # Find matching sessions
446
1237
  matches = find_sessions(
447
- codex_home, keywords, args.num_matches, args.global_search
1238
+ codex_home,
1239
+ keywords,
1240
+ args.num_matches,
1241
+ args.global_search,
1242
+ args.original,
1243
+ args.no_sub,
1244
+ args.no_trim,
1245
+ args.no_cont,
448
1246
  )
449
1247
 
450
- # Display and get selection
451
- result = display_interactive_ui(matches)
452
- if result:
453
- session_id, cwd = result
454
- resume_session(session_id, cwd, args.shell)
1248
+ # Filter by minimum lines if specified
1249
+ if args.min_lines > 0:
1250
+ matches = [m for m in matches if m.get("lines", 0) >= args.min_lines]
1251
+
1252
+ # Filter by time bounds if specified
1253
+ if args.before or args.after:
1254
+ matches = filter_sessions_by_time(
1255
+ matches, before=args.before, after=args.after
1256
+ )
1257
+
1258
+ # Display UI and handle actions
1259
+ # ============================================================
1260
+ # Default: Node UI (rich interactive interface)
1261
+ # --simple-ui: Falls back to Rich table UI
1262
+ # ============================================================
1263
+ nonlaunch_flag = {"done": False}
1264
+ action_handler = create_action_handler(
1265
+ shell_mode=args.shell, codex_home=codex_home, nonlaunch_flag=nonlaunch_flag
1266
+ )
1267
+ rpc_path = str(Path(__file__).parent / "action_rpc.py")
1268
+
1269
+ if not args.simple_ui:
1270
+ limited = [
1271
+ {
1272
+ "agent": "codex",
1273
+ "agent_display": "Codex",
1274
+ "session_id": m.get("session_id"),
1275
+ "mod_time": m.get("mod_time"),
1276
+ "create_time": m.get("create_time", m.get("mod_time")),
1277
+ "lines": m.get("lines"),
1278
+ "project": m.get("project"),
1279
+ "preview": m.get("preview"),
1280
+ "cwd": m.get("cwd"),
1281
+ "branch": m.get("branch", ""),
1282
+ "file_path": m.get("file_path"),
1283
+ "claude_home": None,
1284
+ "is_trimmed": m.get("is_trimmed", False),
1285
+ "derivation_type": m.get("derivation_type"),
1286
+ "is_sidechain": m.get("is_sidechain", False),
1287
+ }
1288
+ for m in matches
1289
+ ]
1290
+
1291
+ focus_id = None
1292
+ start_action = False
1293
+ while True:
1294
+ nonlaunch_flag["done"] = False
1295
+ run_node_menu_ui(
1296
+ limited,
1297
+ keywords,
1298
+ action_handler,
1299
+ stderr_mode=args.shell,
1300
+ rpc_path=rpc_path,
1301
+ )
1302
+ if nonlaunch_flag["done"]:
1303
+ choice = prompt_post_action()
1304
+ if choice == "back":
1305
+ focus_id = nonlaunch_flag.get("session_id")
1306
+ start_action = True
1307
+ continue
1308
+ break
1309
+ else:
1310
+ # Fallback to Rich-based UI
1311
+ selected_match = display_interactive_ui(matches, keywords)
1312
+ if not selected_match:
1313
+ return
1314
+
1315
+ # Show action menu
1316
+ action = show_action_menu(selected_match)
1317
+ if not action:
1318
+ return
1319
+
1320
+ # Perform selected action using action handler
1321
+ action_handler(selected_match, action)
455
1322
 
456
1323
 
457
1324
  if __name__ == "__main__":