@ebowwa/coder 0.7.63 → 0.7.64

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 (341) hide show
  1. package/dist/core/__tests__/permissions.test.d.ts +12 -0
  2. package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
  3. package/dist/core/__tests__/permissions.test.js +851 -0
  4. package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
  5. package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
  6. package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
  7. package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
  8. package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
  9. package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
  10. package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
  11. package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
  12. package/dist/core/agent-loop/__tests__/index.test.js +121 -0
  13. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
  14. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
  15. package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
  16. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
  17. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
  18. package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
  19. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
  20. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
  21. package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
  22. package/dist/core/agent-loop/compaction.d.ts +39 -0
  23. package/dist/core/agent-loop/compaction.d.ts.map +1 -0
  24. package/dist/core/agent-loop/compaction.js +51 -0
  25. package/dist/core/agent-loop/formatters.d.ts +21 -0
  26. package/dist/core/agent-loop/formatters.d.ts.map +1 -0
  27. package/dist/core/agent-loop/formatters.js +42 -0
  28. package/dist/core/agent-loop/index.d.ts +25 -0
  29. package/dist/core/agent-loop/index.d.ts.map +1 -0
  30. package/dist/core/agent-loop/index.js +83 -0
  31. package/dist/core/agent-loop/loop-state.d.ts +74 -0
  32. package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
  33. package/dist/core/agent-loop/loop-state.js +147 -0
  34. package/dist/core/agent-loop/message-builder.d.ts +13 -0
  35. package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
  36. package/dist/core/agent-loop/message-builder.js +49 -0
  37. package/dist/core/agent-loop/tool-executor.d.ts +23 -0
  38. package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
  39. package/dist/core/agent-loop/tool-executor.js +152 -0
  40. package/dist/core/agent-loop/turn-executor.d.ts +57 -0
  41. package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
  42. package/dist/core/agent-loop/turn-executor.js +124 -0
  43. package/dist/core/agent-loop/types.d.ts +141 -0
  44. package/dist/core/agent-loop/types.d.ts.map +1 -0
  45. package/dist/core/agent-loop/types.js +4 -0
  46. package/dist/core/agent-loop.d.ts +17 -0
  47. package/dist/core/agent-loop.d.ts.map +1 -0
  48. package/dist/core/agent-loop.js +16 -0
  49. package/dist/core/api-client-impl.d.ts +62 -0
  50. package/dist/core/api-client-impl.d.ts.map +1 -0
  51. package/dist/core/api-client-impl.js +479 -0
  52. package/dist/core/api-client.d.ts +6 -0
  53. package/dist/core/api-client.d.ts.map +1 -0
  54. package/dist/core/api-client.js +5 -0
  55. package/dist/core/checkpoints.d.ts +128 -0
  56. package/dist/core/checkpoints.d.ts.map +1 -0
  57. package/dist/core/checkpoints.js +438 -0
  58. package/dist/core/claude-md.d.ts +71 -0
  59. package/dist/core/claude-md.d.ts.map +1 -0
  60. package/dist/core/claude-md.js +198 -0
  61. package/dist/core/cognitive-security/hooks.d.ts +138 -0
  62. package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
  63. package/dist/core/cognitive-security/hooks.js +389 -0
  64. package/dist/core/cognitive-security/index.d.ts +751 -0
  65. package/dist/core/cognitive-security/index.d.ts.map +1 -0
  66. package/dist/core/cognitive-security/index.js +1123 -0
  67. package/dist/core/cognitive-security/middleware.d.ts +136 -0
  68. package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
  69. package/dist/core/cognitive-security/middleware.js +376 -0
  70. package/dist/core/config-loader.d.ts +127 -0
  71. package/dist/core/config-loader.d.ts.map +1 -0
  72. package/dist/core/config-loader.js +219 -0
  73. package/dist/core/context-compaction.d.ts +87 -0
  74. package/dist/core/context-compaction.d.ts.map +1 -0
  75. package/dist/core/context-compaction.js +428 -0
  76. package/dist/core/git-status.d.ts +25 -0
  77. package/dist/core/git-status.d.ts.map +1 -0
  78. package/dist/core/git-status.js +204 -0
  79. package/dist/core/image.d.ts +69 -0
  80. package/dist/core/image.d.ts.map +1 -0
  81. package/dist/core/image.js +290 -0
  82. package/dist/core/image.test.d.ts +2 -0
  83. package/dist/core/image.test.d.ts.map +1 -0
  84. package/dist/core/image.test.js +149 -0
  85. package/dist/core/models.d.ts +123 -0
  86. package/dist/core/models.d.ts.map +1 -0
  87. package/dist/core/models.js +325 -0
  88. package/dist/core/permissions.d.ts +81 -0
  89. package/dist/core/permissions.d.ts.map +1 -0
  90. package/dist/core/permissions.js +327 -0
  91. package/dist/core/retry.d.ts +25 -0
  92. package/dist/core/retry.d.ts.map +1 -0
  93. package/dist/core/retry.js +121 -0
  94. package/dist/core/session-store.d.ts +9 -0
  95. package/dist/core/session-store.d.ts.map +1 -0
  96. package/dist/core/session-store.js +10 -0
  97. package/dist/core/sessions/export.d.ts +47 -0
  98. package/dist/core/sessions/export.d.ts.map +1 -0
  99. package/dist/core/sessions/export.js +256 -0
  100. package/dist/core/sessions/index.d.ts +132 -0
  101. package/dist/core/sessions/index.d.ts.map +1 -0
  102. package/dist/core/sessions/index.js +442 -0
  103. package/dist/core/sessions/metadata.d.ts +77 -0
  104. package/dist/core/sessions/metadata.d.ts.map +1 -0
  105. package/dist/core/sessions/metadata.js +233 -0
  106. package/dist/core/sessions/persistence.d.ts +72 -0
  107. package/dist/core/sessions/persistence.d.ts.map +1 -0
  108. package/dist/core/sessions/persistence.js +201 -0
  109. package/dist/core/sessions/types.d.ts +110 -0
  110. package/dist/core/sessions/types.d.ts.map +1 -0
  111. package/dist/core/sessions/types.js +4 -0
  112. package/dist/core/stream-highlighter.d.ts +18 -0
  113. package/dist/core/stream-highlighter.d.ts.map +1 -0
  114. package/dist/core/stream-highlighter.js +916 -0
  115. package/dist/core/system-reminders.d.ts +89 -0
  116. package/dist/core/system-reminders.d.ts.map +1 -0
  117. package/dist/core/system-reminders.js +285 -0
  118. package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
  119. package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
  120. package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
  121. package/dist/ecosystem/hooks/index.d.ts +59 -0
  122. package/dist/ecosystem/hooks/index.d.ts.map +1 -0
  123. package/dist/ecosystem/hooks/index.js +294 -0
  124. package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
  125. package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
  126. package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
  127. package/dist/ecosystem/skills/index.d.ts +55 -0
  128. package/dist/ecosystem/skills/index.d.ts.map +1 -0
  129. package/dist/ecosystem/skills/index.js +258 -0
  130. package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
  131. package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
  132. package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
  133. package/dist/ecosystem/tools/index.d.ts +24 -0
  134. package/dist/ecosystem/tools/index.d.ts.map +1 -0
  135. package/dist/ecosystem/tools/index.js +1709 -0
  136. package/dist/index.d.ts +24 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +32 -52192
  139. package/dist/interfaces/mcp/client.d.ts +40 -0
  140. package/dist/interfaces/mcp/client.d.ts.map +1 -0
  141. package/dist/interfaces/mcp/client.js +309 -0
  142. package/dist/interfaces/ui/index.d.ts +36 -0
  143. package/dist/interfaces/ui/index.d.ts.map +1 -0
  144. package/dist/interfaces/ui/index.js +61 -0
  145. package/dist/interfaces/ui/spinner.d.ts +140 -0
  146. package/dist/interfaces/ui/spinner.d.ts.map +1 -0
  147. package/dist/interfaces/ui/spinner.js +342 -0
  148. package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
  149. package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
  150. package/dist/interfaces/ui/terminal/cli/index.js +159 -52768
  151. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  152. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  153. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  154. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  155. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  156. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  157. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  158. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  159. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  160. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  161. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  162. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  163. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  164. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  165. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  166. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  167. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  168. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  169. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  170. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  171. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  172. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  173. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  174. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  175. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  176. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  177. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  178. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  179. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  180. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  181. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  182. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  183. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  184. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  185. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  186. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  187. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  188. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  189. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  190. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  191. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  192. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  193. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  194. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  195. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  196. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  197. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  198. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  199. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  200. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  201. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  202. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  203. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  204. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  205. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  206. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  207. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  208. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  209. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  210. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  211. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  212. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  213. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  214. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  215. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  216. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  217. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  218. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  219. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  220. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  221. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  222. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  223. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  224. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  225. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  226. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  227. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  228. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  229. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  230. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  231. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  232. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  233. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  234. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  235. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  236. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  237. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  238. package/dist/native/index.d.ts +480 -0
  239. package/dist/native/index.d.ts.map +1 -0
  240. package/dist/native/index.js +1625 -0
  241. package/dist/teammates/index.d.ts +161 -0
  242. package/dist/teammates/index.d.ts.map +1 -0
  243. package/dist/teammates/index.js +827 -0
  244. package/dist/types/index.d.ts +482 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +52 -0
  247. package/package.json +4 -2
  248. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  249. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
  250. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  251. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  252. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  253. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  254. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  255. package/packages/src/core/agent-loop/compaction.ts +88 -0
  256. package/packages/src/core/agent-loop/formatters.ts +50 -0
  257. package/packages/src/core/agent-loop/index.ts +135 -0
  258. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  259. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  260. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  261. package/packages/src/core/agent-loop/turn-executor.ts +222 -0
  262. package/packages/src/core/agent-loop/types.ts +148 -0
  263. package/packages/src/core/agent-loop.ts +18 -0
  264. package/packages/src/core/api-client-impl.ts +619 -0
  265. package/packages/src/core/api-client.ts +6 -0
  266. package/packages/src/core/checkpoints.ts +606 -0
  267. package/packages/src/core/claude-md.ts +272 -0
  268. package/packages/src/core/cognitive-security/hooks.ts +590 -0
  269. package/packages/src/core/cognitive-security/index.ts +2041 -0
  270. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  271. package/packages/src/core/config-loader.ts +324 -0
  272. package/packages/src/core/context-compaction.ts +578 -0
  273. package/packages/src/core/git-status.ts +262 -0
  274. package/packages/src/core/image.test.ts +180 -0
  275. package/packages/src/core/image.ts +350 -0
  276. package/packages/src/core/lmdb.db +0 -0
  277. package/packages/src/core/lmdb.db-lock +0 -0
  278. package/packages/src/core/models.ts +430 -0
  279. package/packages/src/core/normalizers/todo +4 -0
  280. package/packages/src/core/permissions.ts +431 -0
  281. package/packages/src/core/retry.ts +170 -0
  282. package/packages/src/core/session-store.ts +36 -0
  283. package/packages/src/core/sessions/export.ts +329 -0
  284. package/packages/src/core/sessions/index.ts +587 -0
  285. package/packages/src/core/sessions/metadata.ts +309 -0
  286. package/packages/src/core/sessions/persistence.ts +244 -0
  287. package/packages/src/core/sessions/types.ts +169 -0
  288. package/packages/src/core/stream-highlighter.ts +1123 -0
  289. package/packages/src/core/system-reminders.ts +402 -0
  290. package/packages/src/core/todo +8 -0
  291. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  292. package/packages/src/ecosystem/hooks/index.ts +341 -0
  293. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  294. package/packages/src/ecosystem/skills/index.ts +295 -0
  295. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  296. package/packages/src/ecosystem/tools/index.ts +1877 -0
  297. package/packages/src/index.ts +120 -0
  298. package/packages/src/interfaces/mcp/client.ts +389 -0
  299. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  300. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  301. package/packages/src/interfaces/ui/index.ts +161 -0
  302. package/packages/src/interfaces/ui/lmdb.db +0 -0
  303. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  304. package/packages/src/interfaces/ui/spinner.ts +451 -0
  305. package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
  306. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  307. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  308. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  309. package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
  310. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  311. package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
  312. package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
  313. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
  314. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  315. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
  316. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
  317. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
  318. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
  319. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
  320. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
  321. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
  322. package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
  323. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
  324. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
  325. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
  326. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
  327. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
  328. package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
  329. package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
  330. package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
  331. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
  332. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
  333. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
  334. package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
  335. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
  336. package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
  337. package/packages/src/lmdb.db +0 -0
  338. package/packages/src/lmdb.db-lock +0 -0
  339. package/packages/src/native/index.ts +2345 -0
  340. package/packages/src/teammates/index.ts +982 -0
  341. package/packages/src/types/index.ts +722 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Spinner Animation
3
+ * Provides animated spinner frames for loading indicators
4
+ *
5
+ * This is the single source of truth for all spinner frames in Coder.
6
+ * Other modules should import from here rather than defining their own.
7
+ */
8
+ // ============================================
9
+ // SPINNER FRAME DEFINITIONS
10
+ // ============================================
11
+ /**
12
+ * Standard braille spinner frames (default)
13
+ * Used by: ora spinner, TUI footer, Ink components
14
+ */
15
+ export const spinnerFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
16
+ /**
17
+ * Alternative dot spinner frames
18
+ * Rising dots pattern
19
+ */
20
+ export const dotSpinnerFrames = ["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"];
21
+ /**
22
+ * Simple ASCII spinner frames
23
+ * Fallback for limited terminal support
24
+ */
25
+ export const asciiSpinnerFrames = ["|", "/", "-", "\\"];
26
+ /**
27
+ * Arrow spinner frames
28
+ * Used for tool execution indicators
29
+ */
30
+ export const arrowSpinnerFrames = ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"];
31
+ /**
32
+ * Simple dots for minimal display
33
+ */
34
+ export const simpleDotFrames = [". ", ".. ", "...", " "];
35
+ // ============================================
36
+ // FRAME ITERATION UTILITIES
37
+ // ============================================
38
+ /**
39
+ * Get the next spinner frame index
40
+ */
41
+ export function nextFrame(currentIndex, frames = spinnerFrames) {
42
+ return (currentIndex + 1) % frames.length;
43
+ }
44
+ /**
45
+ * Get a spinner frame by index (with wraparound)
46
+ */
47
+ export function getFrame(index, frames = spinnerFrames) {
48
+ return frames[index % frames.length] ?? frames[0] ?? "";
49
+ }
50
+ /**
51
+ * Create a spinner iterator
52
+ */
53
+ export function* createSpinnerIterator(frames = spinnerFrames) {
54
+ let index = 0;
55
+ while (true) {
56
+ yield getFrame(index, frames);
57
+ index = nextFrame(index, frames);
58
+ }
59
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * TUI App Component for Coder CLI
3
+ * Full Ink-based TUI with message area, status bar, and input field
4
+ */
5
+ import React from "react";
6
+ import type { PermissionMode } from "../../../../types/index.js";
7
+ export interface Message {
8
+ id: string;
9
+ role: "user" | "assistant" | "system";
10
+ content: string;
11
+ timestamp: number;
12
+ }
13
+ export interface TUIAppProps {
14
+ permissionMode: PermissionMode;
15
+ tokensUsed: number;
16
+ model: string;
17
+ messages: Message[];
18
+ isLoading?: boolean;
19
+ onSubmit: (value: string) => Promise<void>;
20
+ onExit?: () => void;
21
+ }
22
+ declare function TUIApp({ permissionMode, tokensUsed, model, messages, isLoading, onSubmit, onExit, }: TUIAppProps): React.JSX.Element;
23
+ export interface TUIAppHandle {
24
+ rerender: (props: Partial<TUIAppProps>) => void;
25
+ unmount: () => void;
26
+ waitUntilExit: () => Promise<void>;
27
+ addMessage: (message: Omit<Message, "id" | "timestamp">) => void;
28
+ setMessages: (messages: Message[]) => void;
29
+ setLoading: (isLoading: boolean) => void;
30
+ setTokensUsed: (tokens: number) => void;
31
+ }
32
+ /**
33
+ * Create and render the TUI app
34
+ */
35
+ export declare function createTUIApp(initialProps: Omit<TUIAppProps, "messages"> & {
36
+ messages?: Message[];
37
+ }): TUIAppHandle;
38
+ export default TUIApp;
39
+ //# sourceMappingURL=tui-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-app.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/tui-app.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAWjE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AA8LD,iBAAS,MAAM,CAAC,EACd,cAAc,EACd,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAiB,EACjB,QAAQ,EACR,MAAM,GACP,EAAE,WAAW,qBAiEb;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;IACjE,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,GACrE,YAAY,CAgEd;AAMD,eAAe,MAAM,CAAC"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * TUI App Component for Coder CLI
3
+ * Full Ink-based TUI with message area, status bar, and input field
4
+ */
5
+ import React, { useState, useEffect, useCallback, useRef } from "react";
6
+ import { render, Box, Text, useInput, useApp, useStdout } from "ink";
7
+ import chalk from "chalk";
8
+ import { calculateContextInfo, getPermissionModeDisplay, } from "../shared/status-line.js";
9
+ import { spinnerFrames } from "./spinner.js";
10
+ function MessageArea({ messages, isLoading, height }) {
11
+ const visibleMessages = messages.slice(-height + 2); // Reserve 2 lines for padding
12
+ return (React.createElement(Box, { flexDirection: "column", height: height, overflow: "hidden" },
13
+ visibleMessages.map((msg) => (React.createElement(Box, { key: msg.id, flexDirection: "column", marginBottom: 1 },
14
+ React.createElement(Text, { bold: true, color: msg.role === "user" ? "cyan" : "magenta" }, msg.role === "user" ? "You:" : "Claude:"),
15
+ React.createElement(Text, { dimColor: msg.role === "system" }, msg.content)))),
16
+ isLoading && (React.createElement(Box, null,
17
+ React.createElement(Text, { dimColor: true }, "Thinking...")))));
18
+ }
19
+ function StatusBar({ permissionMode, tokensUsed, model, isLoading, }) {
20
+ const [frame, setFrame] = useState(0);
21
+ const contextInfo = calculateContextInfo(tokensUsed, model);
22
+ const permDisplay = getPermissionModeDisplay(permissionMode);
23
+ // Spinner animation
24
+ useEffect(() => {
25
+ if (!isLoading)
26
+ return;
27
+ const interval = setInterval(() => {
28
+ setFrame((f) => (f + 1) % spinnerFrames.length);
29
+ }, 80);
30
+ return () => clearInterval(interval);
31
+ }, [isLoading]);
32
+ // Build status line
33
+ const parts = [];
34
+ // Loading spinner
35
+ if (isLoading) {
36
+ parts.push(chalk.cyan(spinnerFrames[frame]));
37
+ }
38
+ // Context percentage
39
+ const contextValue = contextInfo.isCritical
40
+ ? chalk.red(`${contextInfo.percentRemaining.toFixed(0)}%`)
41
+ : contextInfo.isLow
42
+ ? chalk.yellow(`${contextInfo.percentRemaining.toFixed(0)}%`)
43
+ : `${contextInfo.percentRemaining.toFixed(0)}%`;
44
+ parts.push(`Context: ${contextValue}`);
45
+ // Permission mode
46
+ const permColor = permDisplay.color;
47
+ const colorFn = chalk[permColor]?.bind(chalk) ?? chalk.gray;
48
+ parts.push(`${colorFn(permDisplay.symbol)} ${permDisplay.label}`);
49
+ const statusText = parts.join(" | ");
50
+ return (React.createElement(Box, { width: "100%", paddingX: 1 },
51
+ React.createElement(Text, { dimColor: true }, statusText)));
52
+ }
53
+ function InputField({ value, onChange, onSubmit, placeholder = "Type your message... (/help for commands)", isActive = true, }) {
54
+ const [cursorPos, setCursorPos] = useState(0);
55
+ useInput((input, key) => {
56
+ if (!isActive)
57
+ return;
58
+ if (key.return) {
59
+ if (value.trim()) {
60
+ onSubmit(value);
61
+ }
62
+ return;
63
+ }
64
+ if (key.backspace || key.delete) {
65
+ if (cursorPos > 0) {
66
+ onChange(value.slice(0, cursorPos - 1) + value.slice(cursorPos));
67
+ setCursorPos(cursorPos - 1);
68
+ }
69
+ return;
70
+ }
71
+ if (key.leftArrow) {
72
+ setCursorPos(Math.max(0, cursorPos - 1));
73
+ return;
74
+ }
75
+ if (key.rightArrow) {
76
+ setCursorPos(Math.min(value.length, cursorPos + 1));
77
+ return;
78
+ }
79
+ if (key.upArrow || key.downArrow) {
80
+ // Ignore up/down for now (could be used for history)
81
+ return;
82
+ }
83
+ // Regular character input
84
+ if (input && !key.ctrl && !key.meta) {
85
+ onChange(value.slice(0, cursorPos) + input + value.slice(cursorPos));
86
+ setCursorPos(cursorPos + input.length);
87
+ }
88
+ }, { isActive });
89
+ // Display value with cursor
90
+ const displayValue = value.length > 0 ? value : chalk.dim(placeholder);
91
+ const cursorChar = value.length > 0 ? "▋" : chalk.dim("▋");
92
+ // Calculate where cursor should appear
93
+ const beforeCursor = value.slice(0, cursorPos);
94
+ const afterCursor = value.slice(cursorPos);
95
+ return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, width: "100%" },
96
+ React.createElement(Text, { bold: true, color: "cyan" },
97
+ "You:",
98
+ " "),
99
+ value.length > 0 ? (React.createElement(Text, null,
100
+ beforeCursor,
101
+ cursorChar,
102
+ afterCursor)) : (React.createElement(Text, { dimColor: true }, placeholder))));
103
+ }
104
+ // ============================================
105
+ // MAIN TUI APP COMPONENT
106
+ // ============================================
107
+ function TUIApp({ permissionMode, tokensUsed, model, messages, isLoading = false, onSubmit, onExit, }) {
108
+ const [inputValue, setInputValue] = useState("");
109
+ const { exit } = useApp();
110
+ const { stdout } = useStdout();
111
+ // Calculate heights
112
+ const terminalHeight = stdout.rows || 24;
113
+ const inputHeight = 3; // Input field with border
114
+ const statusHeight = 1; // Status bar
115
+ const messageHeight = Math.max(5, terminalHeight - inputHeight - statusHeight - 2);
116
+ // Handle global keybindings
117
+ useInput((input, key) => {
118
+ // Ctrl+C to exit
119
+ if (key.ctrl && input === "c") {
120
+ if (onExit)
121
+ onExit();
122
+ exit();
123
+ }
124
+ }, { isActive: true });
125
+ // Handle submit
126
+ const handleSubmit = useCallback(async (value) => {
127
+ if (!value.trim())
128
+ return;
129
+ // Clear input
130
+ setInputValue("");
131
+ // Call onSubmit
132
+ await onSubmit(value);
133
+ }, [onSubmit]);
134
+ return (React.createElement(Box, { flexDirection: "column", height: terminalHeight, width: "100%" },
135
+ React.createElement(Box, { flexGrow: 1, flexDirection: "column", overflow: "hidden" },
136
+ React.createElement(MessageArea, { messages: messages, isLoading: isLoading, height: messageHeight })),
137
+ React.createElement(StatusBar, { permissionMode: permissionMode, tokensUsed: tokensUsed, model: model, isLoading: isLoading }),
138
+ React.createElement(InputField, { value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, isActive: !isLoading })));
139
+ }
140
+ /**
141
+ * Create and render the TUI app
142
+ */
143
+ export function createTUIApp(initialProps) {
144
+ let currentProps = {
145
+ ...initialProps,
146
+ messages: initialProps.messages || [],
147
+ };
148
+ let rerenderFn = null;
149
+ let unmountFn = null;
150
+ let waitUntilExitFn = null;
151
+ // Create the app
152
+ const { rerender, unmount, waitUntilExit } = render(React.createElement(TUIApp, { ...currentProps }), {
153
+ exitOnCtrlC: false,
154
+ });
155
+ rerenderFn = rerender;
156
+ unmountFn = unmount;
157
+ waitUntilExitFn = waitUntilExit;
158
+ return {
159
+ rerender: (newProps) => {
160
+ currentProps = { ...currentProps, ...newProps };
161
+ rerenderFn?.(React.createElement(TUIApp, { ...currentProps }));
162
+ },
163
+ unmount: () => {
164
+ unmountFn?.();
165
+ },
166
+ waitUntilExit: () => {
167
+ return waitUntilExitFn?.() || Promise.resolve();
168
+ },
169
+ addMessage: (message) => {
170
+ const newMessage = {
171
+ ...message,
172
+ id: `msg-${Date.now()}-${Math.random().toString(36).slice(2)}`,
173
+ timestamp: Date.now(),
174
+ };
175
+ currentProps = {
176
+ ...currentProps,
177
+ messages: [...currentProps.messages, newMessage],
178
+ };
179
+ rerenderFn?.(React.createElement(TUIApp, { ...currentProps }));
180
+ },
181
+ setMessages: (messages) => {
182
+ currentProps = { ...currentProps, messages };
183
+ rerenderFn?.(React.createElement(TUIApp, { ...currentProps }));
184
+ },
185
+ setLoading: (isLoading) => {
186
+ currentProps = { ...currentProps, isLoading };
187
+ rerenderFn?.(React.createElement(TUIApp, { ...currentProps }));
188
+ },
189
+ setTokensUsed: (tokensUsed) => {
190
+ currentProps = { ...currentProps, tokensUsed };
191
+ rerenderFn?.(React.createElement(TUIApp, { ...currentProps }));
192
+ },
193
+ };
194
+ }
195
+ // ============================================
196
+ // EXPORTS
197
+ // ============================================
198
+ export default TUIApp;
@@ -0,0 +1,167 @@
1
+ /**
2
+ * TUI Footer Component for Coder CLI
3
+ * Provides a persistent status bar at the bottom of the terminal
4
+ *
5
+ * Uses ANSI escape codes for cursor positioning:
6
+ * - ESC[s Save cursor position
7
+ * - ESC[u Restore cursor position
8
+ * - ESC[#;#H Move cursor to row, col
9
+ * - ESC[2K Clear entire line
10
+ * - ESC[J Clear from cursor to end of screen
11
+ */
12
+ import type { PermissionMode } from "../../../../types/index.js";
13
+ declare const ANSI: {
14
+ SAVE_CURSOR: string;
15
+ RESTORE_CURSOR: string;
16
+ MOVE_TO: (row: number, col: number) => string;
17
+ MOVE_TO_BOTTOM: (offset?: number) => string;
18
+ CLEAR_LINE: string;
19
+ CLEAR_TO_END: string;
20
+ CLEAR_SCREEN: string;
21
+ SCROLL_UP: (lines: number) => string;
22
+ SCROLL_DOWN: (lines: number) => string;
23
+ RESET: string;
24
+ ENTER_ALT_SCREEN: string;
25
+ EXIT_ALT_SCREEN: string;
26
+ HIDE_CURSOR: string;
27
+ SHOW_CURSOR: string;
28
+ };
29
+ export { ANSI };
30
+ export interface TUIFooterOptions {
31
+ /** Permission mode to display */
32
+ permissionMode: PermissionMode;
33
+ /** Tokens used in context */
34
+ tokensUsed: number;
35
+ /** Current model */
36
+ model: string;
37
+ /** Is loading/spinning */
38
+ isLoading?: boolean;
39
+ /** Verbose mode */
40
+ verbose?: boolean;
41
+ /** Show version */
42
+ showVersion?: boolean;
43
+ }
44
+ export interface TUIFooterState {
45
+ isEnabled: boolean;
46
+ lastRender: string;
47
+ lastOptions: TUIFooterOptions | null;
48
+ renderInterval: Timer | null;
49
+ spinnerFrame: number;
50
+ terminalHeight: number;
51
+ terminalWidth: number;
52
+ }
53
+ export declare class TUIFooter {
54
+ private state;
55
+ private static instance;
56
+ private constructor();
57
+ /**
58
+ * Get singleton instance
59
+ */
60
+ static getInstance(): TUIFooter;
61
+ /**
62
+ * Reset singleton (for testing)
63
+ */
64
+ static reset(): void;
65
+ /**
66
+ * Enable the footer (start tracking terminal size)
67
+ */
68
+ enable(): void;
69
+ /**
70
+ * Disable the footer and clear it
71
+ */
72
+ disable(): void;
73
+ /**
74
+ * Check if footer is enabled
75
+ */
76
+ isEnabled(): boolean;
77
+ /**
78
+ * Update terminal dimensions
79
+ */
80
+ private updateTerminalSize;
81
+ /**
82
+ * Handle terminal resize
83
+ */
84
+ private handleResize;
85
+ /**
86
+ * Render the footer at the bottom of the screen
87
+ * Saves cursor position, moves to bottom, renders, restores cursor
88
+ */
89
+ render(options: TUIFooterOptions): void;
90
+ /**
91
+ * Render with loading spinner animation
92
+ */
93
+ renderLoading(options: TUIFooterOptions): void;
94
+ /**
95
+ * Start spinner animation for loading state
96
+ */
97
+ startSpinner(options: TUIFooterOptions, interval?: number): void;
98
+ /**
99
+ * Stop spinner animation
100
+ */
101
+ stopSpinner(): void;
102
+ /**
103
+ * Clear the footer line
104
+ */
105
+ clear(): void;
106
+ /**
107
+ * Update just the token count (for incremental updates)
108
+ */
109
+ updateTokens(tokensUsed: number): void;
110
+ /**
111
+ * Update loading state
112
+ */
113
+ setLoading(isLoading: boolean): void;
114
+ /**
115
+ * Get terminal dimensions
116
+ */
117
+ getTerminalSize(): {
118
+ width: number;
119
+ height: number;
120
+ };
121
+ }
122
+ /**
123
+ * Get the global TUI footer instance
124
+ */
125
+ export declare function getTUIFooter(): TUIFooter;
126
+ /**
127
+ * Enable TUI footer
128
+ */
129
+ export declare function enableTUIFooter(): TUIFooter;
130
+ /**
131
+ * Disable TUI footer
132
+ */
133
+ export declare function disableTUIFooter(): void;
134
+ /**
135
+ * Render footer status (convenience function)
136
+ */
137
+ export declare function renderTUIFooter(options: TUIFooterOptions): void;
138
+ /**
139
+ * Clear the footer line
140
+ */
141
+ export declare function clearTUIFooter(): void;
142
+ declare const _default: {
143
+ TUIFooter: typeof TUIFooter;
144
+ getTUIFooter: typeof getTUIFooter;
145
+ enableTUIFooter: typeof enableTUIFooter;
146
+ disableTUIFooter: typeof disableTUIFooter;
147
+ renderTUIFooter: typeof renderTUIFooter;
148
+ clearTUIFooter: typeof clearTUIFooter;
149
+ ANSI: {
150
+ SAVE_CURSOR: string;
151
+ RESTORE_CURSOR: string;
152
+ MOVE_TO: (row: number, col: number) => string;
153
+ MOVE_TO_BOTTOM: (offset?: number) => string;
154
+ CLEAR_LINE: string;
155
+ CLEAR_TO_END: string;
156
+ CLEAR_SCREEN: string;
157
+ SCROLL_UP: (lines: number) => string;
158
+ SCROLL_DOWN: (lines: number) => string;
159
+ RESET: string;
160
+ ENTER_ALT_SCREEN: string;
161
+ EXIT_ALT_SCREEN: string;
162
+ HIDE_CURSOR: string;
163
+ SHOW_CURSOR: string;
164
+ };
165
+ };
166
+ export default _default;
167
+ //# sourceMappingURL=tui-footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-footer.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/tui/tui-footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,QAAA,MAAM,IAAI;;;mBAIO,MAAM,OAAO,MAAM;;;;;uBASf,MAAM;yBACJ,MAAM;;;;;;CAY5B,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAC;AAMhB,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AA0DD,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IAEjD,OAAO;IAYP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,SAAS;IAO/B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACH,MAAM,IAAI,IAAI;IAUd;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,YAAY,CAKlB;IAEF;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAiCvC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAqB9C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,SAAK,GAAG,IAAI;IAQ5D;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAStC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAgBpC;;OAEG;IACH,eAAe,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAMrD;AAMD;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAI3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;;;;;;;;;;;uBA1XgB,MAAM,OAAO,MAAM;;;;;2BASf,MAAM;6BACJ,MAAM;;;;;;;;AAsX7B,wBAQE"}