idlerpg.sh 0.1.0

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 (478) hide show
  1. package/README.md +171 -0
  2. package/dist/affix/AffixRegistry.d.ts +68 -0
  3. package/dist/affix/AffixRegistry.d.ts.map +1 -0
  4. package/dist/affix/AffixRegistry.js +245 -0
  5. package/dist/affix/AffixRegistry.js.map +1 -0
  6. package/dist/affix/PluginLoader.d.ts +66 -0
  7. package/dist/affix/PluginLoader.d.ts.map +1 -0
  8. package/dist/affix/PluginLoader.js +321 -0
  9. package/dist/affix/PluginLoader.js.map +1 -0
  10. package/dist/affix/builtin.d.ts +6 -0
  11. package/dist/affix/builtin.d.ts.map +1 -0
  12. package/dist/affix/builtin.js +311 -0
  13. package/dist/affix/builtin.js.map +1 -0
  14. package/dist/affix/index.d.ts +8 -0
  15. package/dist/affix/index.d.ts.map +1 -0
  16. package/dist/affix/index.js +11 -0
  17. package/dist/affix/index.js.map +1 -0
  18. package/dist/affix/types.d.ts +152 -0
  19. package/dist/affix/types.d.ts.map +1 -0
  20. package/dist/affix/types.js +8 -0
  21. package/dist/affix/types.js.map +1 -0
  22. package/dist/ai/PlayKitClient.d.ts +208 -0
  23. package/dist/ai/PlayKitClient.d.ts.map +1 -0
  24. package/dist/ai/PlayKitClient.js +721 -0
  25. package/dist/ai/PlayKitClient.js.map +1 -0
  26. package/dist/ai/index.d.ts +5 -0
  27. package/dist/ai/index.d.ts.map +1 -0
  28. package/dist/ai/index.js +8 -0
  29. package/dist/ai/index.js.map +1 -0
  30. package/dist/app/App.d.ts +85 -0
  31. package/dist/app/App.d.ts.map +1 -0
  32. package/dist/app/App.js +296 -0
  33. package/dist/app/App.js.map +1 -0
  34. package/dist/app/EventBus.d.ts +222 -0
  35. package/dist/app/EventBus.d.ts.map +1 -0
  36. package/dist/app/EventBus.js +88 -0
  37. package/dist/app/EventBus.js.map +1 -0
  38. package/dist/app/Keybind.d.ts +83 -0
  39. package/dist/app/Keybind.d.ts.map +1 -0
  40. package/dist/app/Keybind.js +184 -0
  41. package/dist/app/Keybind.js.map +1 -0
  42. package/dist/app/Router.d.ts +123 -0
  43. package/dist/app/Router.d.ts.map +1 -0
  44. package/dist/app/Router.js +142 -0
  45. package/dist/app/Router.js.map +1 -0
  46. package/dist/app/ScreenManager.d.ts +97 -0
  47. package/dist/app/ScreenManager.d.ts.map +1 -0
  48. package/dist/app/ScreenManager.js +216 -0
  49. package/dist/app/ScreenManager.js.map +1 -0
  50. package/dist/app/index.d.ts +14 -0
  51. package/dist/app/index.d.ts.map +1 -0
  52. package/dist/app/index.js +19 -0
  53. package/dist/app/index.js.map +1 -0
  54. package/dist/app/screens/BaseScreen.d.ts +101 -0
  55. package/dist/app/screens/BaseScreen.d.ts.map +1 -0
  56. package/dist/app/screens/BaseScreen.js +132 -0
  57. package/dist/app/screens/BaseScreen.js.map +1 -0
  58. package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
  59. package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
  60. package/dist/app/screens/CharacterCreationScreen.js +467 -0
  61. package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
  62. package/dist/app/screens/CombatScreen.d.ts +30 -0
  63. package/dist/app/screens/CombatScreen.d.ts.map +1 -0
  64. package/dist/app/screens/CombatScreen.js +309 -0
  65. package/dist/app/screens/CombatScreen.js.map +1 -0
  66. package/dist/app/screens/DialogScreen.d.ts +29 -0
  67. package/dist/app/screens/DialogScreen.d.ts.map +1 -0
  68. package/dist/app/screens/DialogScreen.js +295 -0
  69. package/dist/app/screens/DialogScreen.js.map +1 -0
  70. package/dist/app/screens/ExploreScreen.d.ts +50 -0
  71. package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
  72. package/dist/app/screens/ExploreScreen.js +308 -0
  73. package/dist/app/screens/ExploreScreen.js.map +1 -0
  74. package/dist/app/screens/HelpScreen.d.ts +12 -0
  75. package/dist/app/screens/HelpScreen.d.ts.map +1 -0
  76. package/dist/app/screens/HelpScreen.js +155 -0
  77. package/dist/app/screens/HelpScreen.js.map +1 -0
  78. package/dist/app/screens/InventoryScreen.d.ts +27 -0
  79. package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
  80. package/dist/app/screens/InventoryScreen.js +326 -0
  81. package/dist/app/screens/InventoryScreen.js.map +1 -0
  82. package/dist/app/screens/PrologueScreen.d.ts +24 -0
  83. package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
  84. package/dist/app/screens/PrologueScreen.js +176 -0
  85. package/dist/app/screens/PrologueScreen.js.map +1 -0
  86. package/dist/app/screens/TitleScreen.d.ts +42 -0
  87. package/dist/app/screens/TitleScreen.d.ts.map +1 -0
  88. package/dist/app/screens/TitleScreen.js +380 -0
  89. package/dist/app/screens/TitleScreen.js.map +1 -0
  90. package/dist/app/screens/TravelScreen.d.ts +22 -0
  91. package/dist/app/screens/TravelScreen.d.ts.map +1 -0
  92. package/dist/app/screens/TravelScreen.js +122 -0
  93. package/dist/app/screens/TravelScreen.js.map +1 -0
  94. package/dist/app/screens/index.d.ts +14 -0
  95. package/dist/app/screens/index.d.ts.map +1 -0
  96. package/dist/app/screens/index.js +17 -0
  97. package/dist/app/screens/index.js.map +1 -0
  98. package/dist/commands/CommandRegistry.d.ts +91 -0
  99. package/dist/commands/CommandRegistry.d.ts.map +1 -0
  100. package/dist/commands/CommandRegistry.js +159 -0
  101. package/dist/commands/CommandRegistry.js.map +1 -0
  102. package/dist/commands/index.d.ts +7 -0
  103. package/dist/commands/index.d.ts.map +1 -0
  104. package/dist/commands/index.js +10 -0
  105. package/dist/commands/index.js.map +1 -0
  106. package/dist/core/Actor.d.ts +103 -0
  107. package/dist/core/Actor.d.ts.map +1 -0
  108. package/dist/core/Actor.js +409 -0
  109. package/dist/core/Actor.js.map +1 -0
  110. package/dist/core/Combat.d.ts +37 -0
  111. package/dist/core/Combat.d.ts.map +1 -0
  112. package/dist/core/Combat.js +294 -0
  113. package/dist/core/Combat.js.map +1 -0
  114. package/dist/core/DungeonRunner.d.ts +169 -0
  115. package/dist/core/DungeonRunner.d.ts.map +1 -0
  116. package/dist/core/DungeonRunner.js +627 -0
  117. package/dist/core/DungeonRunner.js.map +1 -0
  118. package/dist/core/Game.d.ts +133 -0
  119. package/dist/core/Game.d.ts.map +1 -0
  120. package/dist/core/Game.js +644 -0
  121. package/dist/core/Game.js.map +1 -0
  122. package/dist/core/IdleCombat.d.ts +61 -0
  123. package/dist/core/IdleCombat.d.ts.map +1 -0
  124. package/dist/core/IdleCombat.js +461 -0
  125. package/dist/core/IdleCombat.js.map +1 -0
  126. package/dist/core/IdleGameManager.d.ts +198 -0
  127. package/dist/core/IdleGameManager.d.ts.map +1 -0
  128. package/dist/core/IdleGameManager.js +688 -0
  129. package/dist/core/IdleGameManager.js.map +1 -0
  130. package/dist/core/IdleSaveManager.d.ts +109 -0
  131. package/dist/core/IdleSaveManager.d.ts.map +1 -0
  132. package/dist/core/IdleSaveManager.js +296 -0
  133. package/dist/core/IdleSaveManager.js.map +1 -0
  134. package/dist/core/NewGameFlowManager.d.ts +64 -0
  135. package/dist/core/NewGameFlowManager.d.ts.map +1 -0
  136. package/dist/core/NewGameFlowManager.js +153 -0
  137. package/dist/core/NewGameFlowManager.js.map +1 -0
  138. package/dist/core/Player.d.ts +65 -0
  139. package/dist/core/Player.d.ts.map +1 -0
  140. package/dist/core/Player.js +261 -0
  141. package/dist/core/Player.js.map +1 -0
  142. package/dist/core/RoomHandlers.d.ts +75 -0
  143. package/dist/core/RoomHandlers.d.ts.map +1 -0
  144. package/dist/core/RoomHandlers.js +383 -0
  145. package/dist/core/RoomHandlers.js.map +1 -0
  146. package/dist/core/SaveManager.d.ts +84 -0
  147. package/dist/core/SaveManager.d.ts.map +1 -0
  148. package/dist/core/SaveManager.js +281 -0
  149. package/dist/core/SaveManager.js.map +1 -0
  150. package/dist/core/SaveMigration.d.ts +69 -0
  151. package/dist/core/SaveMigration.d.ts.map +1 -0
  152. package/dist/core/SaveMigration.js +408 -0
  153. package/dist/core/SaveMigration.js.map +1 -0
  154. package/dist/core/StateAdapter.d.ts +79 -0
  155. package/dist/core/StateAdapter.d.ts.map +1 -0
  156. package/dist/core/StateAdapter.js +397 -0
  157. package/dist/core/StateAdapter.js.map +1 -0
  158. package/dist/core/Team.d.ts +145 -0
  159. package/dist/core/Team.d.ts.map +1 -0
  160. package/dist/core/Team.js +371 -0
  161. package/dist/core/Team.js.map +1 -0
  162. package/dist/core/TeamCombat.d.ts +88 -0
  163. package/dist/core/TeamCombat.d.ts.map +1 -0
  164. package/dist/core/TeamCombat.js +405 -0
  165. package/dist/core/TeamCombat.js.map +1 -0
  166. package/dist/core/TeamDungeonRunner.d.ts +186 -0
  167. package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
  168. package/dist/core/TeamDungeonRunner.js +758 -0
  169. package/dist/core/TeamDungeonRunner.js.map +1 -0
  170. package/dist/core/TimeManager.d.ts +114 -0
  171. package/dist/core/TimeManager.d.ts.map +1 -0
  172. package/dist/core/TimeManager.js +318 -0
  173. package/dist/core/TimeManager.js.map +1 -0
  174. package/dist/core/index.d.ts +9 -0
  175. package/dist/core/index.d.ts.map +1 -0
  176. package/dist/core/index.js +12 -0
  177. package/dist/core/index.js.map +1 -0
  178. package/dist/core/timeConstants.d.ts +135 -0
  179. package/dist/core/timeConstants.d.ts.map +1 -0
  180. package/dist/core/timeConstants.js +157 -0
  181. package/dist/core/timeConstants.js.map +1 -0
  182. package/dist/core/types.d.ts +780 -0
  183. package/dist/core/types.d.ts.map +1 -0
  184. package/dist/core/types.js +16 -0
  185. package/dist/core/types.js.map +1 -0
  186. package/dist/data/continents/index.d.ts +163 -0
  187. package/dist/data/continents/index.d.ts.map +1 -0
  188. package/dist/data/continents/index.js +31 -0
  189. package/dist/data/continents/index.js.map +1 -0
  190. package/dist/data/continents/verdantia.d.ts +294 -0
  191. package/dist/data/continents/verdantia.d.ts.map +1 -0
  192. package/dist/data/continents/verdantia.js +327 -0
  193. package/dist/data/continents/verdantia.js.map +1 -0
  194. package/dist/handlers/DialogHandler.d.ts +95 -0
  195. package/dist/handlers/DialogHandler.d.ts.map +1 -0
  196. package/dist/handlers/DialogHandler.js +450 -0
  197. package/dist/handlers/DialogHandler.js.map +1 -0
  198. package/dist/handlers/SaveLoadHandler.d.ts +60 -0
  199. package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
  200. package/dist/handlers/SaveLoadHandler.js +187 -0
  201. package/dist/handlers/SaveLoadHandler.js.map +1 -0
  202. package/dist/handlers/TitleScreenHandler.d.ts +43 -0
  203. package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
  204. package/dist/handlers/TitleScreenHandler.js +508 -0
  205. package/dist/handlers/TitleScreenHandler.js.map +1 -0
  206. package/dist/handlers/WorkshopHandler.d.ts +75 -0
  207. package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
  208. package/dist/handlers/WorkshopHandler.js +401 -0
  209. package/dist/handlers/WorkshopHandler.js.map +1 -0
  210. package/dist/handlers/index.d.ts +12 -0
  211. package/dist/handlers/index.d.ts.map +1 -0
  212. package/dist/handlers/index.js +14 -0
  213. package/dist/handlers/index.js.map +1 -0
  214. package/dist/handlers/types.d.ts +34 -0
  215. package/dist/handlers/types.d.ts.map +1 -0
  216. package/dist/handlers/types.js +8 -0
  217. package/dist/handlers/types.js.map +1 -0
  218. package/dist/i18n/en.d.ts +3 -0
  219. package/dist/i18n/en.d.ts.map +1 -0
  220. package/dist/i18n/en.js +130 -0
  221. package/dist/i18n/en.js.map +1 -0
  222. package/dist/i18n/index.d.ts +40 -0
  223. package/dist/i18n/index.d.ts.map +1 -0
  224. package/dist/i18n/index.js +105 -0
  225. package/dist/i18n/index.js.map +1 -0
  226. package/dist/i18n/types.d.ts +133 -0
  227. package/dist/i18n/types.d.ts.map +1 -0
  228. package/dist/i18n/types.js +8 -0
  229. package/dist/i18n/types.js.map +1 -0
  230. package/dist/i18n/zh.d.ts +3 -0
  231. package/dist/i18n/zh.d.ts.map +1 -0
  232. package/dist/i18n/zh.js +130 -0
  233. package/dist/i18n/zh.js.map +1 -0
  234. package/dist/instrument.d.ts +8 -0
  235. package/dist/instrument.d.ts.map +1 -0
  236. package/dist/instrument.js +33 -0
  237. package/dist/instrument.js.map +1 -0
  238. package/dist/main-new.d.ts +12 -0
  239. package/dist/main-new.d.ts.map +1 -0
  240. package/dist/main-new.js +32 -0
  241. package/dist/main-new.js.map +1 -0
  242. package/dist/main.d.ts +7 -0
  243. package/dist/main.d.ts.map +1 -0
  244. package/dist/main.js +2816 -0
  245. package/dist/main.js.map +1 -0
  246. package/dist/map/ContinentManager.d.ts +88 -0
  247. package/dist/map/ContinentManager.d.ts.map +1 -0
  248. package/dist/map/ContinentManager.js +241 -0
  249. package/dist/map/ContinentManager.js.map +1 -0
  250. package/dist/map/DungeonGenerator.d.ts +32 -0
  251. package/dist/map/DungeonGenerator.d.ts.map +1 -0
  252. package/dist/map/DungeonGenerator.js +615 -0
  253. package/dist/map/DungeonGenerator.js.map +1 -0
  254. package/dist/map/MapGenerator.d.ts +27 -0
  255. package/dist/map/MapGenerator.d.ts.map +1 -0
  256. package/dist/map/MapGenerator.js +485 -0
  257. package/dist/map/MapGenerator.js.map +1 -0
  258. package/dist/map/index.d.ts +5 -0
  259. package/dist/map/index.d.ts.map +1 -0
  260. package/dist/map/index.js +8 -0
  261. package/dist/map/index.js.map +1 -0
  262. package/dist/npc/NPCGenerator.d.ts +68 -0
  263. package/dist/npc/NPCGenerator.d.ts.map +1 -0
  264. package/dist/npc/NPCGenerator.js +468 -0
  265. package/dist/npc/NPCGenerator.js.map +1 -0
  266. package/dist/npc/NPCManager.d.ts +86 -0
  267. package/dist/npc/NPCManager.d.ts.map +1 -0
  268. package/dist/npc/NPCManager.js +217 -0
  269. package/dist/npc/NPCManager.js.map +1 -0
  270. package/dist/npc/fixedNPCs.d.ts +7 -0
  271. package/dist/npc/fixedNPCs.d.ts.map +1 -0
  272. package/dist/npc/fixedNPCs.js +196 -0
  273. package/dist/npc/fixedNPCs.js.map +1 -0
  274. package/dist/npc/index.d.ts +9 -0
  275. package/dist/npc/index.d.ts.map +1 -0
  276. package/dist/npc/index.js +12 -0
  277. package/dist/npc/index.js.map +1 -0
  278. package/dist/npc/traits.d.ts +33 -0
  279. package/dist/npc/traits.d.ts.map +1 -0
  280. package/dist/npc/traits.js +795 -0
  281. package/dist/npc/traits.js.map +1 -0
  282. package/dist/npc/types.d.ts +193 -0
  283. package/dist/npc/types.d.ts.map +1 -0
  284. package/dist/npc/types.js +9 -0
  285. package/dist/npc/types.js.map +1 -0
  286. package/dist/quest/QuestManager.d.ts +79 -0
  287. package/dist/quest/QuestManager.d.ts.map +1 -0
  288. package/dist/quest/QuestManager.js +273 -0
  289. package/dist/quest/QuestManager.js.map +1 -0
  290. package/dist/quest/index.d.ts +6 -0
  291. package/dist/quest/index.d.ts.map +1 -0
  292. package/dist/quest/index.js +9 -0
  293. package/dist/quest/index.js.map +1 -0
  294. package/dist/quest/types.d.ts +81 -0
  295. package/dist/quest/types.d.ts.map +1 -0
  296. package/dist/quest/types.js +8 -0
  297. package/dist/quest/types.js.map +1 -0
  298. package/dist/strategy/StrategyExecutor.d.ts +159 -0
  299. package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
  300. package/dist/strategy/StrategyExecutor.js +479 -0
  301. package/dist/strategy/StrategyExecutor.js.map +1 -0
  302. package/dist/strategy/StrategyParser.d.ts +48 -0
  303. package/dist/strategy/StrategyParser.d.ts.map +1 -0
  304. package/dist/strategy/StrategyParser.js +321 -0
  305. package/dist/strategy/StrategyParser.js.map +1 -0
  306. package/dist/strategy/defaultStrategy.d.ts +40 -0
  307. package/dist/strategy/defaultStrategy.d.ts.map +1 -0
  308. package/dist/strategy/defaultStrategy.js +254 -0
  309. package/dist/strategy/defaultStrategy.js.map +1 -0
  310. package/dist/strategy/index.d.ts +8 -0
  311. package/dist/strategy/index.d.ts.map +1 -0
  312. package/dist/strategy/index.js +14 -0
  313. package/dist/strategy/index.js.map +1 -0
  314. package/dist/tui/ExploreMenu.d.ts +106 -0
  315. package/dist/tui/ExploreMenu.d.ts.map +1 -0
  316. package/dist/tui/ExploreMenu.js +282 -0
  317. package/dist/tui/ExploreMenu.js.map +1 -0
  318. package/dist/tui/GameUI.d.ts +313 -0
  319. package/dist/tui/GameUI.d.ts.map +1 -0
  320. package/dist/tui/GameUI.js +2116 -0
  321. package/dist/tui/GameUI.js.map +1 -0
  322. package/dist/tui/GameUIAdapter.d.ts +207 -0
  323. package/dist/tui/GameUIAdapter.d.ts.map +1 -0
  324. package/dist/tui/GameUIAdapter.js +1342 -0
  325. package/dist/tui/GameUIAdapter.js.map +1 -0
  326. package/dist/tui/Input.d.ts +139 -0
  327. package/dist/tui/Input.d.ts.map +1 -0
  328. package/dist/tui/Input.js +278 -0
  329. package/dist/tui/Input.js.map +1 -0
  330. package/dist/tui/Menu.d.ts +110 -0
  331. package/dist/tui/Menu.d.ts.map +1 -0
  332. package/dist/tui/Menu.js +365 -0
  333. package/dist/tui/Menu.js.map +1 -0
  334. package/dist/tui/Screen.d.ts +228 -0
  335. package/dist/tui/Screen.d.ts.map +1 -0
  336. package/dist/tui/Screen.js +502 -0
  337. package/dist/tui/Screen.js.map +1 -0
  338. package/dist/tui/components/Box.d.ts +36 -0
  339. package/dist/tui/components/Box.d.ts.map +1 -0
  340. package/dist/tui/components/Box.js +43 -0
  341. package/dist/tui/components/Box.js.map +1 -0
  342. package/dist/tui/components/List.d.ts +69 -0
  343. package/dist/tui/components/List.d.ts.map +1 -0
  344. package/dist/tui/components/List.js +136 -0
  345. package/dist/tui/components/List.js.map +1 -0
  346. package/dist/tui/components/ProgressBar.d.ts +42 -0
  347. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  348. package/dist/tui/components/ProgressBar.js +75 -0
  349. package/dist/tui/components/ProgressBar.js.map +1 -0
  350. package/dist/tui/components/index.d.ts +8 -0
  351. package/dist/tui/components/index.d.ts.map +1 -0
  352. package/dist/tui/components/index.js +11 -0
  353. package/dist/tui/components/index.js.map +1 -0
  354. package/dist/tui/core/BaseSection.d.ts +98 -0
  355. package/dist/tui/core/BaseSection.d.ts.map +1 -0
  356. package/dist/tui/core/BaseSection.js +174 -0
  357. package/dist/tui/core/BaseSection.js.map +1 -0
  358. package/dist/tui/core/Component.d.ts +61 -0
  359. package/dist/tui/core/Component.d.ts.map +1 -0
  360. package/dist/tui/core/Component.js +32 -0
  361. package/dist/tui/core/Component.js.map +1 -0
  362. package/dist/tui/core/Section.d.ts +101 -0
  363. package/dist/tui/core/Section.d.ts.map +1 -0
  364. package/dist/tui/core/Section.js +24 -0
  365. package/dist/tui/core/Section.js.map +1 -0
  366. package/dist/tui/core/SectionManager.d.ts +108 -0
  367. package/dist/tui/core/SectionManager.d.ts.map +1 -0
  368. package/dist/tui/core/SectionManager.js +258 -0
  369. package/dist/tui/core/SectionManager.js.map +1 -0
  370. package/dist/tui/core/index.d.ts +9 -0
  371. package/dist/tui/core/index.d.ts.map +1 -0
  372. package/dist/tui/core/index.js +12 -0
  373. package/dist/tui/core/index.js.map +1 -0
  374. package/dist/tui/index.d.ts +15 -0
  375. package/dist/tui/index.d.ts.map +1 -0
  376. package/dist/tui/index.js +23 -0
  377. package/dist/tui/index.js.map +1 -0
  378. package/dist/tui/screens/BaseScreen.d.ts +62 -0
  379. package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
  380. package/dist/tui/screens/BaseScreen.js +55 -0
  381. package/dist/tui/screens/BaseScreen.js.map +1 -0
  382. package/dist/tui/screens/CombatScreen.d.ts +43 -0
  383. package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
  384. package/dist/tui/screens/CombatScreen.js +125 -0
  385. package/dist/tui/screens/CombatScreen.js.map +1 -0
  386. package/dist/tui/screens/DialogScreen.d.ts +53 -0
  387. package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
  388. package/dist/tui/screens/DialogScreen.js +90 -0
  389. package/dist/tui/screens/DialogScreen.js.map +1 -0
  390. package/dist/tui/screens/DungeonScreen.d.ts +80 -0
  391. package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
  392. package/dist/tui/screens/DungeonScreen.js +317 -0
  393. package/dist/tui/screens/DungeonScreen.js.map +1 -0
  394. package/dist/tui/screens/ExploreScreen.d.ts +69 -0
  395. package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
  396. package/dist/tui/screens/ExploreScreen.js +224 -0
  397. package/dist/tui/screens/ExploreScreen.js.map +1 -0
  398. package/dist/tui/screens/SectionScreen.d.ts +84 -0
  399. package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
  400. package/dist/tui/screens/SectionScreen.js +156 -0
  401. package/dist/tui/screens/SectionScreen.js.map +1 -0
  402. package/dist/tui/screens/TitleScreen.d.ts +40 -0
  403. package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
  404. package/dist/tui/screens/TitleScreen.js +253 -0
  405. package/dist/tui/screens/TitleScreen.js.map +1 -0
  406. package/dist/tui/screens/TownScreen.d.ts +98 -0
  407. package/dist/tui/screens/TownScreen.d.ts.map +1 -0
  408. package/dist/tui/screens/TownScreen.js +370 -0
  409. package/dist/tui/screens/TownScreen.js.map +1 -0
  410. package/dist/tui/screens/TravelScreen.d.ts +67 -0
  411. package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
  412. package/dist/tui/screens/TravelScreen.js +286 -0
  413. package/dist/tui/screens/TravelScreen.js.map +1 -0
  414. package/dist/tui/screens/index.d.ts +8 -0
  415. package/dist/tui/screens/index.d.ts.map +1 -0
  416. package/dist/tui/screens/index.js +17 -0
  417. package/dist/tui/screens/index.js.map +1 -0
  418. package/dist/tui/sections/ActionsSection.d.ts +71 -0
  419. package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
  420. package/dist/tui/sections/ActionsSection.js +184 -0
  421. package/dist/tui/sections/ActionsSection.js.map +1 -0
  422. package/dist/tui/sections/DungeonSection.d.ts +65 -0
  423. package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
  424. package/dist/tui/sections/DungeonSection.js +144 -0
  425. package/dist/tui/sections/DungeonSection.js.map +1 -0
  426. package/dist/tui/sections/EventsSection.d.ts +50 -0
  427. package/dist/tui/sections/EventsSection.d.ts.map +1 -0
  428. package/dist/tui/sections/EventsSection.js +134 -0
  429. package/dist/tui/sections/EventsSection.js.map +1 -0
  430. package/dist/tui/sections/MapSection.d.ts +66 -0
  431. package/dist/tui/sections/MapSection.d.ts.map +1 -0
  432. package/dist/tui/sections/MapSection.js +669 -0
  433. package/dist/tui/sections/MapSection.js.map +1 -0
  434. package/dist/tui/sections/StatusSection.d.ts +47 -0
  435. package/dist/tui/sections/StatusSection.d.ts.map +1 -0
  436. package/dist/tui/sections/StatusSection.js +133 -0
  437. package/dist/tui/sections/StatusSection.js.map +1 -0
  438. package/dist/tui/sections/TeamSection.d.ts +71 -0
  439. package/dist/tui/sections/TeamSection.d.ts.map +1 -0
  440. package/dist/tui/sections/TeamSection.js +224 -0
  441. package/dist/tui/sections/TeamSection.js.map +1 -0
  442. package/dist/tui/sections/TravelingSection.d.ts +51 -0
  443. package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
  444. package/dist/tui/sections/TravelingSection.js +106 -0
  445. package/dist/tui/sections/TravelingSection.js.map +1 -0
  446. package/dist/tui/sections/index.d.ts +9 -0
  447. package/dist/tui/sections/index.d.ts.map +1 -0
  448. package/dist/tui/sections/index.js +12 -0
  449. package/dist/tui/sections/index.js.map +1 -0
  450. package/dist/ui/Terminal.d.ts +68 -0
  451. package/dist/ui/Terminal.d.ts.map +1 -0
  452. package/dist/ui/Terminal.js +297 -0
  453. package/dist/ui/Terminal.js.map +1 -0
  454. package/dist/ui/index.d.ts +5 -0
  455. package/dist/ui/index.d.ts.map +1 -0
  456. package/dist/ui/index.js +8 -0
  457. package/dist/ui/index.js.map +1 -0
  458. package/dist/utils/configMigration.d.ts +14 -0
  459. package/dist/utils/configMigration.d.ts.map +1 -0
  460. package/dist/utils/configMigration.js +92 -0
  461. package/dist/utils/configMigration.js.map +1 -0
  462. package/dist/utils/errorHandler.d.ts +86 -0
  463. package/dist/utils/errorHandler.d.ts.map +1 -0
  464. package/dist/utils/errorHandler.js +224 -0
  465. package/dist/utils/errorHandler.js.map +1 -0
  466. package/dist/utils/logger.d.ts +14 -0
  467. package/dist/utils/logger.d.ts.map +1 -0
  468. package/dist/utils/logger.js +43 -0
  469. package/dist/utils/logger.js.map +1 -0
  470. package/dist/weapon/WeaponFactory.d.ts +32 -0
  471. package/dist/weapon/WeaponFactory.d.ts.map +1 -0
  472. package/dist/weapon/WeaponFactory.js +216 -0
  473. package/dist/weapon/WeaponFactory.js.map +1 -0
  474. package/dist/weapon/index.d.ts +5 -0
  475. package/dist/weapon/index.d.ts.map +1 -0
  476. package/dist/weapon/index.js +8 -0
  477. package/dist/weapon/index.js.map +1 -0
  478. package/package.json +46 -0
@@ -0,0 +1,278 @@
1
+ /**
2
+ * TUI Input Handler - Keyboard input management
3
+ */
4
+
5
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c4381082-ee03-5821-9eba-f576600de88b")}catch(e){}}();
6
+ import * as readline from 'readline';
7
+ /**
8
+ * Special key names
9
+ */
10
+ export const KEYS = {
11
+ UP: 'up',
12
+ DOWN: 'down',
13
+ LEFT: 'left',
14
+ RIGHT: 'right',
15
+ ENTER: 'return',
16
+ SPACE: 'space',
17
+ ESCAPE: 'escape',
18
+ TAB: 'tab',
19
+ BACKSPACE: 'backspace',
20
+ DELETE: 'delete',
21
+ HOME: 'home',
22
+ END: 'end',
23
+ PAGEUP: 'pageup',
24
+ PAGEDOWN: 'pagedown',
25
+ };
26
+ /**
27
+ * Input manager class
28
+ *
29
+ * Uses a focus stack pattern for input routing:
30
+ * - Only the top handler on the stack receives key events
31
+ * - Handlers push themselves onto the stack when they need exclusive input
32
+ * - Handlers pop themselves when they're done
33
+ */
34
+ export class InputManager {
35
+ rl = null;
36
+ focusStack = [];
37
+ lineHandlers = new Set();
38
+ mode = 'raw';
39
+ inputBuffer = '';
40
+ isActive = false;
41
+ /**
42
+ * Start listening for input
43
+ */
44
+ start() {
45
+ if (this.isActive)
46
+ return;
47
+ // Enable raw mode for keypress detection
48
+ if (process.stdin.isTTY) {
49
+ process.stdin.setRawMode(true);
50
+ }
51
+ process.stdin.resume();
52
+ process.stdin.setEncoding('utf8');
53
+ // Handle keypress events
54
+ readline.emitKeypressEvents(process.stdin);
55
+ process.stdin.on('keypress', (str, key) => {
56
+ if (!key) {
57
+ key = { name: str, ctrl: false, meta: false, shift: false, sequence: str };
58
+ }
59
+ const event = {
60
+ name: key.name || str || '',
61
+ ctrl: key.ctrl || false,
62
+ meta: key.meta || false,
63
+ shift: key.shift || false,
64
+ sequence: key.sequence || str || '',
65
+ raw: str || '',
66
+ };
67
+ // Handle Ctrl+C to exit
68
+ if (event.ctrl && event.name === 'c') {
69
+ this.emit('exit');
70
+ return;
71
+ }
72
+ // In line mode, buffer input
73
+ if (this.mode === 'line') {
74
+ this.handleLineInput(event);
75
+ }
76
+ else {
77
+ // Raw mode - emit keypress immediately
78
+ this.emitKey(event);
79
+ }
80
+ });
81
+ this.isActive = true;
82
+ }
83
+ /**
84
+ * Stop listening for input
85
+ */
86
+ stop() {
87
+ if (!this.isActive)
88
+ return;
89
+ if (process.stdin.isTTY) {
90
+ process.stdin.setRawMode(false);
91
+ }
92
+ process.stdin.pause();
93
+ process.stdin.removeAllListeners('keypress');
94
+ if (this.rl) {
95
+ this.rl.close();
96
+ this.rl = null;
97
+ }
98
+ this.isActive = false;
99
+ }
100
+ /**
101
+ * Set input mode
102
+ */
103
+ setMode(mode) {
104
+ this.mode = mode;
105
+ this.inputBuffer = '';
106
+ }
107
+ /**
108
+ * Get current input buffer (for line mode)
109
+ */
110
+ getInputBuffer() {
111
+ return this.inputBuffer;
112
+ }
113
+ /**
114
+ * Clear input buffer
115
+ */
116
+ clearInputBuffer() {
117
+ this.inputBuffer = '';
118
+ }
119
+ /**
120
+ * Handle input in line mode
121
+ */
122
+ handleLineInput(key) {
123
+ switch (key.name) {
124
+ case 'return':
125
+ const line = this.inputBuffer;
126
+ this.inputBuffer = '';
127
+ this.emitLine(line);
128
+ break;
129
+ case 'backspace':
130
+ this.inputBuffer = this.inputBuffer.slice(0, -1);
131
+ this.emitKey(key);
132
+ break;
133
+ case 'escape':
134
+ this.inputBuffer = '';
135
+ this.emitKey(key);
136
+ break;
137
+ default:
138
+ // Add printable characters to buffer (including Unicode)
139
+ if (key.raw && !key.ctrl && !key.meta) {
140
+ // Accept all printable characters including Unicode
141
+ // Filter out control characters (< 32) except allow space (32)
142
+ const firstCharCode = key.raw.charCodeAt(0);
143
+ if (firstCharCode >= 32) {
144
+ this.inputBuffer += key.raw;
145
+ }
146
+ }
147
+ this.emitKey(key);
148
+ }
149
+ }
150
+ /**
151
+ * Push a handler onto the focus stack
152
+ * The new handler will receive exclusive input until popped
153
+ */
154
+ pushFocus(handler) {
155
+ this.focusStack.push(handler);
156
+ }
157
+ /**
158
+ * Pop the top handler from the focus stack
159
+ * Returns the popped handler, or undefined if stack is empty
160
+ */
161
+ popFocus() {
162
+ return this.focusStack.pop();
163
+ }
164
+ /**
165
+ * Get the current focused handler (top of stack)
166
+ */
167
+ getCurrentFocus() {
168
+ return this.focusStack[this.focusStack.length - 1];
169
+ }
170
+ /**
171
+ * Check if there are any handlers on the focus stack
172
+ */
173
+ hasFocus() {
174
+ return this.focusStack.length > 0;
175
+ }
176
+ /**
177
+ * @deprecated Use pushFocus/popFocus instead
178
+ * Kept for backward compatibility during migration
179
+ */
180
+ onKey(handler) {
181
+ this.pushFocus(handler);
182
+ }
183
+ /**
184
+ * @deprecated Use pushFocus/popFocus instead
185
+ * Removes a specific handler from anywhere in the stack
186
+ */
187
+ offKey(handler) {
188
+ const index = this.focusStack.indexOf(handler);
189
+ if (index !== -1) {
190
+ this.focusStack.splice(index, 1);
191
+ }
192
+ }
193
+ /**
194
+ * Register line handler
195
+ */
196
+ onLine(handler) {
197
+ this.lineHandlers.add(handler);
198
+ }
199
+ /**
200
+ * Unregister line handler
201
+ */
202
+ offLine(handler) {
203
+ this.lineHandlers.delete(handler);
204
+ }
205
+ /**
206
+ * Emit key event to the top handler on the focus stack
207
+ * Only the handler at the top of the stack receives the event
208
+ */
209
+ emitKey(key) {
210
+ const topHandler = this.focusStack[this.focusStack.length - 1];
211
+ if (topHandler) {
212
+ topHandler(key);
213
+ }
214
+ }
215
+ /**
216
+ * Emit line event
217
+ */
218
+ emitLine(line) {
219
+ for (const handler of this.lineHandlers) {
220
+ handler(line);
221
+ }
222
+ }
223
+ /**
224
+ * Emit custom event
225
+ */
226
+ emit(event) {
227
+ if (event === 'exit') {
228
+ // Will be handled by main game
229
+ process.emit('SIGINT');
230
+ }
231
+ }
232
+ /**
233
+ * Wait for a specific key
234
+ */
235
+ waitForKey(keyName) {
236
+ return new Promise((resolve) => {
237
+ const handler = (key) => {
238
+ if (!keyName || key.name === keyName) {
239
+ this.offKey(handler);
240
+ resolve(key);
241
+ }
242
+ };
243
+ this.onKey(handler);
244
+ });
245
+ }
246
+ /**
247
+ * Wait for line input
248
+ */
249
+ waitForLine() {
250
+ return new Promise((resolve) => {
251
+ const prevMode = this.mode;
252
+ this.setMode('line');
253
+ const handler = (line) => {
254
+ this.offLine(handler);
255
+ this.setMode(prevMode);
256
+ resolve(line);
257
+ };
258
+ this.onLine(handler);
259
+ });
260
+ }
261
+ /**
262
+ * Prompt for input with echo
263
+ */
264
+ async prompt(prefix = '> ') {
265
+ // This will be used with the screen to show input
266
+ return this.waitForLine();
267
+ }
268
+ }
269
+ // Singleton
270
+ let inputInstance = null;
271
+ export function getInput() {
272
+ if (!inputInstance) {
273
+ inputInstance = new InputManager();
274
+ }
275
+ return inputInstance;
276
+ }
277
+ //# sourceMappingURL=Input.js.map
278
+ //# debugId=c4381082-ee03-5821-9eba-f576600de88b
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["tui/Input.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * TUI Input Handler - Keyboard input management\r\n */\r\n\r\nimport * as readline from 'readline';\r\n\r\n/**\r\n * Key event types\r\n */\r\nexport interface KeyEvent {\r\n name: string;\r\n ctrl: boolean;\r\n meta: boolean;\r\n shift: boolean;\r\n sequence: string;\r\n raw: string;\r\n}\r\n\r\n/**\r\n * Special key names\r\n */\r\nexport const KEYS = {\r\n UP: 'up',\r\n DOWN: 'down',\r\n LEFT: 'left',\r\n RIGHT: 'right',\r\n ENTER: 'return',\r\n SPACE: 'space',\r\n ESCAPE: 'escape',\r\n TAB: 'tab',\r\n BACKSPACE: 'backspace',\r\n DELETE: 'delete',\r\n HOME: 'home',\r\n END: 'end',\r\n PAGEUP: 'pageup',\r\n PAGEDOWN: 'pagedown',\r\n};\r\n\r\nexport type KeyHandler = (key: KeyEvent) => void;\r\ntype LineHandler = (line: string) => void;\r\n\r\n/**\r\n * Input manager class\r\n *\r\n * Uses a focus stack pattern for input routing:\r\n * - Only the top handler on the stack receives key events\r\n * - Handlers push themselves onto the stack when they need exclusive input\r\n * - Handlers pop themselves when they're done\r\n */\r\nexport class InputManager {\r\n private rl: readline.Interface | null = null;\r\n private focusStack: KeyHandler[] = [];\r\n private lineHandlers: Set<LineHandler> = new Set();\r\n private mode: 'raw' | 'line' = 'raw';\r\n private inputBuffer: string = '';\r\n private isActive: boolean = false;\r\n\r\n /**\r\n * Start listening for input\r\n */\r\n start(): void {\r\n if (this.isActive) return;\r\n\r\n // Enable raw mode for keypress detection\r\n if (process.stdin.isTTY) {\r\n process.stdin.setRawMode(true);\r\n }\r\n process.stdin.resume();\r\n process.stdin.setEncoding('utf8');\r\n\r\n // Handle keypress events\r\n readline.emitKeypressEvents(process.stdin);\r\n\r\n process.stdin.on('keypress', (str, key) => {\r\n if (!key) {\r\n key = { name: str, ctrl: false, meta: false, shift: false, sequence: str };\r\n }\r\n\r\n const event: KeyEvent = {\r\n name: key.name || str || '',\r\n ctrl: key.ctrl || false,\r\n meta: key.meta || false,\r\n shift: key.shift || false,\r\n sequence: key.sequence || str || '',\r\n raw: str || '',\r\n };\r\n\r\n // Handle Ctrl+C to exit\r\n if (event.ctrl && event.name === 'c') {\r\n this.emit('exit');\r\n return;\r\n }\r\n\r\n // In line mode, buffer input\r\n if (this.mode === 'line') {\r\n this.handleLineInput(event);\r\n } else {\r\n // Raw mode - emit keypress immediately\r\n this.emitKey(event);\r\n }\r\n });\r\n\r\n this.isActive = true;\r\n }\r\n\r\n /**\r\n * Stop listening for input\r\n */\r\n stop(): void {\r\n if (!this.isActive) return;\r\n\r\n if (process.stdin.isTTY) {\r\n process.stdin.setRawMode(false);\r\n }\r\n process.stdin.pause();\r\n process.stdin.removeAllListeners('keypress');\r\n\r\n if (this.rl) {\r\n this.rl.close();\r\n this.rl = null;\r\n }\r\n\r\n this.isActive = false;\r\n }\r\n\r\n /**\r\n * Set input mode\r\n */\r\n setMode(mode: 'raw' | 'line'): void {\r\n this.mode = mode;\r\n this.inputBuffer = '';\r\n }\r\n\r\n /**\r\n * Get current input buffer (for line mode)\r\n */\r\n getInputBuffer(): string {\r\n return this.inputBuffer;\r\n }\r\n\r\n /**\r\n * Clear input buffer\r\n */\r\n clearInputBuffer(): void {\r\n this.inputBuffer = '';\r\n }\r\n\r\n /**\r\n * Handle input in line mode\r\n */\r\n private handleLineInput(key: KeyEvent): void {\r\n switch (key.name) {\r\n case 'return':\r\n const line = this.inputBuffer;\r\n this.inputBuffer = '';\r\n this.emitLine(line);\r\n break;\r\n\r\n case 'backspace':\r\n this.inputBuffer = this.inputBuffer.slice(0, -1);\r\n this.emitKey(key);\r\n break;\r\n\r\n case 'escape':\r\n this.inputBuffer = '';\r\n this.emitKey(key);\r\n break;\r\n\r\n default:\r\n // Add printable characters to buffer (including Unicode)\r\n if (key.raw && !key.ctrl && !key.meta) {\r\n // Accept all printable characters including Unicode\r\n // Filter out control characters (< 32) except allow space (32)\r\n const firstCharCode = key.raw.charCodeAt(0);\r\n if (firstCharCode >= 32) {\r\n this.inputBuffer += key.raw;\r\n }\r\n }\r\n this.emitKey(key);\r\n }\r\n }\r\n\r\n /**\r\n * Push a handler onto the focus stack\r\n * The new handler will receive exclusive input until popped\r\n */\r\n pushFocus(handler: KeyHandler): void {\r\n this.focusStack.push(handler);\r\n }\r\n\r\n /**\r\n * Pop the top handler from the focus stack\r\n * Returns the popped handler, or undefined if stack is empty\r\n */\r\n popFocus(): KeyHandler | undefined {\r\n return this.focusStack.pop();\r\n }\r\n\r\n /**\r\n * Get the current focused handler (top of stack)\r\n */\r\n getCurrentFocus(): KeyHandler | undefined {\r\n return this.focusStack[this.focusStack.length - 1];\r\n }\r\n\r\n /**\r\n * Check if there are any handlers on the focus stack\r\n */\r\n hasFocus(): boolean {\r\n return this.focusStack.length > 0;\r\n }\r\n\r\n /**\r\n * @deprecated Use pushFocus/popFocus instead\r\n * Kept for backward compatibility during migration\r\n */\r\n onKey(handler: KeyHandler): void {\r\n this.pushFocus(handler);\r\n }\r\n\r\n /**\r\n * @deprecated Use pushFocus/popFocus instead\r\n * Removes a specific handler from anywhere in the stack\r\n */\r\n offKey(handler: KeyHandler): void {\r\n const index = this.focusStack.indexOf(handler);\r\n if (index !== -1) {\r\n this.focusStack.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Register line handler\r\n */\r\n onLine(handler: LineHandler): void {\r\n this.lineHandlers.add(handler);\r\n }\r\n\r\n /**\r\n * Unregister line handler\r\n */\r\n offLine(handler: LineHandler): void {\r\n this.lineHandlers.delete(handler);\r\n }\r\n\r\n /**\r\n * Emit key event to the top handler on the focus stack\r\n * Only the handler at the top of the stack receives the event\r\n */\r\n private emitKey(key: KeyEvent): void {\r\n const topHandler = this.focusStack[this.focusStack.length - 1];\r\n if (topHandler) {\r\n topHandler(key);\r\n }\r\n }\r\n\r\n /**\r\n * Emit line event\r\n */\r\n private emitLine(line: string): void {\r\n for (const handler of this.lineHandlers) {\r\n handler(line);\r\n }\r\n }\r\n\r\n /**\r\n * Emit custom event\r\n */\r\n private emit(event: string): void {\r\n if (event === 'exit') {\r\n // Will be handled by main game\r\n process.emit('SIGINT');\r\n }\r\n }\r\n\r\n /**\r\n * Wait for a specific key\r\n */\r\n waitForKey(keyName?: string): Promise<KeyEvent> {\r\n return new Promise((resolve) => {\r\n const handler: KeyHandler = (key) => {\r\n if (!keyName || key.name === keyName) {\r\n this.offKey(handler);\r\n resolve(key);\r\n }\r\n };\r\n this.onKey(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Wait for line input\r\n */\r\n waitForLine(): Promise<string> {\r\n return new Promise((resolve) => {\r\n const prevMode = this.mode;\r\n this.setMode('line');\r\n \r\n const handler: LineHandler = (line) => {\r\n this.offLine(handler);\r\n this.setMode(prevMode);\r\n resolve(line);\r\n };\r\n this.onLine(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Prompt for input with echo\r\n */\r\n async prompt(prefix: string = '> '): Promise<string> {\r\n // This will be used with the screen to show input\r\n return this.waitForLine();\r\n }\r\n}\r\n\r\n// Singleton\r\nlet inputInstance: InputManager | null = null;\r\n\r\nexport function getInput(): InputManager {\r\n if (!inputInstance) {\r\n inputInstance = new InputManager();\r\n }\r\n return inputInstance;\r\n}\r\n"],"names":[],"mappings":"AAAA;;GAEG;;;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAcrC;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAKF;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACf,EAAE,GAA8B,IAAI,CAAC;IACrC,UAAU,GAAiB,EAAE,CAAC;IAC9B,YAAY,GAAqB,IAAI,GAAG,EAAE,CAAC;IAC3C,IAAI,GAAmB,KAAK,CAAC;IAC7B,WAAW,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAY,KAAK,CAAC;IAElC;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,yCAAyC;QACzC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,yBAAyB;QACzB,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YAC7E,CAAC;YAED,MAAM,KAAK,GAAa;gBACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,EAAE;gBAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK;gBACvB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK;gBACvB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK;gBACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,IAAI,EAAE;gBACnC,GAAG,EAAE,GAAG,IAAI,EAAE;aACf,CAAC;YAEF,wBAAwB;YACxB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,6BAA6B;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAoB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAa;QACnC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;YAER,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;YAER;gBACE,yDAAyD;gBACzD,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACtC,oDAAoD;oBACpD,+DAA+D;oBAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;wBACxB,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,OAAmB;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAmB;QACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAmB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAoB;QACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAoB;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,GAAa;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,IAAY;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,IAAI,CAAC,KAAa;QACxB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,+BAA+B;YAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAgB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAe,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErB,MAAM,OAAO,GAAgB,CAAC,IAAI,EAAE,EAAE;gBACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,IAAI;QAChC,kDAAkD;QAClD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,YAAY;AACZ,IAAI,aAAa,GAAwB,IAAI,CAAC;AAE9C,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","debug_id":"c4381082-ee03-5821-9eba-f576600de88b"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Menu System - Option-based navigation
3
+ * Inspired by opencode's DialogSelect pattern
4
+ */
5
+ /**
6
+ * Menu option
7
+ */
8
+ export interface MenuOption {
9
+ id: string;
10
+ label: string;
11
+ description?: string;
12
+ shortcut?: string;
13
+ category?: string;
14
+ disabled?: boolean;
15
+ action?: () => void | Promise<void>;
16
+ subMenu?: MenuOption[];
17
+ }
18
+ /**
19
+ * Menu configuration
20
+ */
21
+ export interface MenuConfig {
22
+ title: string;
23
+ options: MenuOption[];
24
+ selectedIndex?: number;
25
+ showSearch?: boolean;
26
+ showCategories?: boolean;
27
+ onSelect?: (option: MenuOption) => void | Promise<void>;
28
+ onCancel?: () => void;
29
+ x?: number;
30
+ y?: number;
31
+ width?: number;
32
+ maxHeight?: number;
33
+ }
34
+ /**
35
+ * Menu renderer and controller
36
+ */
37
+ export declare class Menu {
38
+ private screen;
39
+ private config;
40
+ private state;
41
+ private isActive;
42
+ private keyHandler;
43
+ private resolvePromise;
44
+ constructor(config: MenuConfig);
45
+ /**
46
+ * Show menu and wait for selection
47
+ */
48
+ show(): Promise<MenuOption | null>;
49
+ /**
50
+ * Close menu
51
+ */
52
+ close(selected?: MenuOption | null): void;
53
+ /**
54
+ * Setup keyboard handler
55
+ */
56
+ private setupKeyHandler;
57
+ /**
58
+ * Remove keyboard handler
59
+ */
60
+ private removeKeyHandler;
61
+ /**
62
+ * Move selection
63
+ */
64
+ private moveSelection;
65
+ /**
66
+ * Move to start
67
+ */
68
+ private moveToStart;
69
+ /**
70
+ * Move to end
71
+ */
72
+ private moveToEnd;
73
+ /**
74
+ * Ensure selected item is visible
75
+ */
76
+ private ensureVisible;
77
+ /**
78
+ * Filter options based on search query
79
+ */
80
+ private filterOptions;
81
+ /**
82
+ * Select current option
83
+ */
84
+ private selectCurrent;
85
+ /**
86
+ * Select specific option
87
+ */
88
+ private selectOption;
89
+ /**
90
+ * Cancel menu
91
+ */
92
+ private cancel;
93
+ /**
94
+ * Render menu
95
+ */
96
+ render(): void;
97
+ }
98
+ /**
99
+ * Quick menu helper - show a menu and return the selected option
100
+ */
101
+ export declare function showMenu(config: MenuConfig): Promise<MenuOption | null>;
102
+ /**
103
+ * Confirm dialog
104
+ */
105
+ export declare function showConfirm(title: string, message: string): Promise<boolean>;
106
+ /**
107
+ * Alert dialog
108
+ */
109
+ export declare function showAlert(title: string, message: string): Promise<void>;
110
+ //# sourceMappingURL=Menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"/","sources":["tui/Menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,cAAc,CAAsD;gBAEhE,MAAM,EAAE,UAAU;IAW9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUxC;;OAEG;IACH,KAAK,CAAC,QAAQ,GAAE,UAAU,GAAG,IAAW,GAAG,IAAI;IAS/C;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;YACW,YAAY;IA+B1B;;OAEG;IACH,OAAO,CAAC,MAAM;IAOd;;OAEG;IACH,MAAM,IAAI,IAAI;CA6Gf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E"}