deepseek-coder-agent-cli 1.0.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 (501) hide show
  1. package/README.md +58 -0
  2. package/dist/bin/cliMode.d.ts +8 -0
  3. package/dist/bin/cliMode.d.ts.map +1 -0
  4. package/dist/bin/cliMode.js +20 -0
  5. package/dist/bin/cliMode.js.map +1 -0
  6. package/dist/bin/deepseek.d.ts +6 -0
  7. package/dist/bin/deepseek.d.ts.map +1 -0
  8. package/dist/bin/deepseek.js +136 -0
  9. package/dist/bin/deepseek.js.map +1 -0
  10. package/dist/config.d.ts +25 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +155 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/contracts/agent-profiles.schema.json +43 -0
  15. package/dist/contracts/agent-schemas.json +460 -0
  16. package/dist/contracts/models.schema.json +9 -0
  17. package/dist/contracts/module-schema.json +419 -0
  18. package/dist/contracts/schemas/agent-profile.schema.json +157 -0
  19. package/dist/contracts/schemas/agent-rules.schema.json +238 -0
  20. package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
  21. package/dist/contracts/schemas/agent.schema.json +90 -0
  22. package/dist/contracts/schemas/tool-selection.schema.json +174 -0
  23. package/dist/contracts/tools.schema.json +82 -0
  24. package/dist/contracts/unified-schema.json +750 -0
  25. package/dist/contracts/v1/agent.d.ts +179 -0
  26. package/dist/contracts/v1/agent.d.ts.map +1 -0
  27. package/dist/contracts/v1/agent.js +8 -0
  28. package/dist/contracts/v1/agent.js.map +1 -0
  29. package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
  30. package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
  31. package/dist/contracts/v1/agentProfileManifest.js +9 -0
  32. package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
  33. package/dist/contracts/v1/agentRules.d.ts +60 -0
  34. package/dist/contracts/v1/agentRules.d.ts.map +1 -0
  35. package/dist/contracts/v1/agentRules.js +10 -0
  36. package/dist/contracts/v1/agentRules.js.map +1 -0
  37. package/dist/contracts/v1/provider.d.ts +149 -0
  38. package/dist/contracts/v1/provider.d.ts.map +1 -0
  39. package/dist/contracts/v1/provider.js +7 -0
  40. package/dist/contracts/v1/provider.js.map +1 -0
  41. package/dist/contracts/v1/tool.d.ts +136 -0
  42. package/dist/contracts/v1/tool.d.ts.map +1 -0
  43. package/dist/contracts/v1/tool.js +7 -0
  44. package/dist/contracts/v1/tool.js.map +1 -0
  45. package/dist/contracts/v1/toolAccess.d.ts +43 -0
  46. package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
  47. package/dist/contracts/v1/toolAccess.js +9 -0
  48. package/dist/contracts/v1/toolAccess.js.map +1 -0
  49. package/dist/core/agent.d.ts +287 -0
  50. package/dist/core/agent.d.ts.map +1 -0
  51. package/dist/core/agent.js +1563 -0
  52. package/dist/core/agent.js.map +1 -0
  53. package/dist/core/agentProfileManifest.d.ts +3 -0
  54. package/dist/core/agentProfileManifest.d.ts.map +1 -0
  55. package/dist/core/agentProfileManifest.js +188 -0
  56. package/dist/core/agentProfileManifest.js.map +1 -0
  57. package/dist/core/agentProfiles.d.ts +22 -0
  58. package/dist/core/agentProfiles.d.ts.map +1 -0
  59. package/dist/core/agentProfiles.js +35 -0
  60. package/dist/core/agentProfiles.js.map +1 -0
  61. package/dist/core/agentRulebook.d.ts +11 -0
  62. package/dist/core/agentRulebook.d.ts.map +1 -0
  63. package/dist/core/agentRulebook.js +136 -0
  64. package/dist/core/agentRulebook.js.map +1 -0
  65. package/dist/core/agentSchemaLoader.d.ts +131 -0
  66. package/dist/core/agentSchemaLoader.d.ts.map +1 -0
  67. package/dist/core/agentSchemaLoader.js +235 -0
  68. package/dist/core/agentSchemaLoader.js.map +1 -0
  69. package/dist/core/agiCore.d.ts +290 -0
  70. package/dist/core/agiCore.d.ts.map +1 -0
  71. package/dist/core/agiCore.js +1348 -0
  72. package/dist/core/agiCore.js.map +1 -0
  73. package/dist/core/aiErrorFixer.d.ts +57 -0
  74. package/dist/core/aiErrorFixer.d.ts.map +1 -0
  75. package/dist/core/aiErrorFixer.js +214 -0
  76. package/dist/core/aiErrorFixer.js.map +1 -0
  77. package/dist/core/antiTermination.d.ts +226 -0
  78. package/dist/core/antiTermination.d.ts.map +1 -0
  79. package/dist/core/antiTermination.js +713 -0
  80. package/dist/core/antiTermination.js.map +1 -0
  81. package/dist/core/bashCommandGuidance.d.ts +16 -0
  82. package/dist/core/bashCommandGuidance.d.ts.map +1 -0
  83. package/dist/core/bashCommandGuidance.js +40 -0
  84. package/dist/core/bashCommandGuidance.js.map +1 -0
  85. package/dist/core/constants.d.ts +31 -0
  86. package/dist/core/constants.d.ts.map +1 -0
  87. package/dist/core/constants.js +62 -0
  88. package/dist/core/constants.js.map +1 -0
  89. package/dist/core/contextManager.d.ts +271 -0
  90. package/dist/core/contextManager.d.ts.map +1 -0
  91. package/dist/core/contextManager.js +1073 -0
  92. package/dist/core/contextManager.js.map +1 -0
  93. package/dist/core/contextWindow.d.ts +42 -0
  94. package/dist/core/contextWindow.d.ts.map +1 -0
  95. package/dist/core/contextWindow.js +123 -0
  96. package/dist/core/contextWindow.js.map +1 -0
  97. package/dist/core/customCommands.d.ts +19 -0
  98. package/dist/core/customCommands.d.ts.map +1 -0
  99. package/dist/core/customCommands.js +85 -0
  100. package/dist/core/customCommands.js.map +1 -0
  101. package/dist/core/deepBugAnalyzer.d.ts +25 -0
  102. package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
  103. package/dist/core/deepBugAnalyzer.js +44 -0
  104. package/dist/core/deepBugAnalyzer.js.map +1 -0
  105. package/dist/core/dualTournament.d.ts +110 -0
  106. package/dist/core/dualTournament.d.ts.map +1 -0
  107. package/dist/core/dualTournament.js +270 -0
  108. package/dist/core/dualTournament.js.map +1 -0
  109. package/dist/core/dynamicGuardrails.d.ts +207 -0
  110. package/dist/core/dynamicGuardrails.d.ts.map +1 -0
  111. package/dist/core/dynamicGuardrails.js +516 -0
  112. package/dist/core/dynamicGuardrails.js.map +1 -0
  113. package/dist/core/embeddingProviders.d.ts +80 -0
  114. package/dist/core/embeddingProviders.d.ts.map +1 -0
  115. package/dist/core/embeddingProviders.js +241 -0
  116. package/dist/core/embeddingProviders.js.map +1 -0
  117. package/dist/core/episodicMemory.d.ts +259 -0
  118. package/dist/core/episodicMemory.d.ts.map +1 -0
  119. package/dist/core/episodicMemory.js +833 -0
  120. package/dist/core/episodicMemory.js.map +1 -0
  121. package/dist/core/errors/apiKeyErrors.d.ts +11 -0
  122. package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
  123. package/dist/core/errors/apiKeyErrors.js +159 -0
  124. package/dist/core/errors/apiKeyErrors.js.map +1 -0
  125. package/dist/core/errors/errorTypes.d.ts +111 -0
  126. package/dist/core/errors/errorTypes.d.ts.map +1 -0
  127. package/dist/core/errors/errorTypes.js +345 -0
  128. package/dist/core/errors/errorTypes.js.map +1 -0
  129. package/dist/core/errors/index.d.ts +50 -0
  130. package/dist/core/errors/index.d.ts.map +1 -0
  131. package/dist/core/errors/index.js +156 -0
  132. package/dist/core/errors/index.js.map +1 -0
  133. package/dist/core/errors/networkErrors.d.ts +14 -0
  134. package/dist/core/errors/networkErrors.d.ts.map +1 -0
  135. package/dist/core/errors/networkErrors.js +53 -0
  136. package/dist/core/errors/networkErrors.js.map +1 -0
  137. package/dist/core/errors/safetyValidator.d.ts +115 -0
  138. package/dist/core/errors/safetyValidator.d.ts.map +1 -0
  139. package/dist/core/errors/safetyValidator.js +302 -0
  140. package/dist/core/errors/safetyValidator.js.map +1 -0
  141. package/dist/core/errors.d.ts +4 -0
  142. package/dist/core/errors.d.ts.map +1 -0
  143. package/dist/core/errors.js +33 -0
  144. package/dist/core/errors.js.map +1 -0
  145. package/dist/core/finalResponseFormatter.d.ts +10 -0
  146. package/dist/core/finalResponseFormatter.d.ts.map +1 -0
  147. package/dist/core/finalResponseFormatter.js +14 -0
  148. package/dist/core/finalResponseFormatter.js.map +1 -0
  149. package/dist/core/flowProtection.d.ts +154 -0
  150. package/dist/core/flowProtection.d.ts.map +1 -0
  151. package/dist/core/flowProtection.js +436 -0
  152. package/dist/core/flowProtection.js.map +1 -0
  153. package/dist/core/gitWorktreeManager.d.ts +126 -0
  154. package/dist/core/gitWorktreeManager.d.ts.map +1 -0
  155. package/dist/core/gitWorktreeManager.js +403 -0
  156. package/dist/core/gitWorktreeManager.js.map +1 -0
  157. package/dist/core/guardrails.d.ts +150 -0
  158. package/dist/core/guardrails.d.ts.map +1 -0
  159. package/dist/core/guardrails.js +360 -0
  160. package/dist/core/guardrails.js.map +1 -0
  161. package/dist/core/hallucinationGuard.d.ts +57 -0
  162. package/dist/core/hallucinationGuard.d.ts.map +1 -0
  163. package/dist/core/hallucinationGuard.js +237 -0
  164. package/dist/core/hallucinationGuard.js.map +1 -0
  165. package/dist/core/hitlEnforcement.d.ts +143 -0
  166. package/dist/core/hitlEnforcement.d.ts.map +1 -0
  167. package/dist/core/hitlEnforcement.js +583 -0
  168. package/dist/core/hitlEnforcement.js.map +1 -0
  169. package/dist/core/hooks.d.ts +113 -0
  170. package/dist/core/hooks.d.ts.map +1 -0
  171. package/dist/core/hooks.js +364 -0
  172. package/dist/core/hooks.js.map +1 -0
  173. package/dist/core/hotReload.d.ts +154 -0
  174. package/dist/core/hotReload.d.ts.map +1 -0
  175. package/dist/core/hotReload.js +451 -0
  176. package/dist/core/hotReload.js.map +1 -0
  177. package/dist/core/hypothesisEngine.d.ts +27 -0
  178. package/dist/core/hypothesisEngine.d.ts.map +1 -0
  179. package/dist/core/hypothesisEngine.js +58 -0
  180. package/dist/core/hypothesisEngine.js.map +1 -0
  181. package/dist/core/index.d.ts +26 -0
  182. package/dist/core/index.d.ts.map +1 -0
  183. package/dist/core/index.js +54 -0
  184. package/dist/core/index.js.map +1 -0
  185. package/dist/core/inputProtection.d.ts +122 -0
  186. package/dist/core/inputProtection.d.ts.map +1 -0
  187. package/dist/core/inputProtection.js +421 -0
  188. package/dist/core/inputProtection.js.map +1 -0
  189. package/dist/core/liveGCPVerification.d.ts +41 -0
  190. package/dist/core/liveGCPVerification.d.ts.map +1 -0
  191. package/dist/core/liveGCPVerification.js +745 -0
  192. package/dist/core/liveGCPVerification.js.map +1 -0
  193. package/dist/core/modelDiscovery.d.ts +105 -0
  194. package/dist/core/modelDiscovery.d.ts.map +1 -0
  195. package/dist/core/modelDiscovery.js +740 -0
  196. package/dist/core/modelDiscovery.js.map +1 -0
  197. package/dist/core/multilinePasteHandler.d.ts +35 -0
  198. package/dist/core/multilinePasteHandler.d.ts.map +1 -0
  199. package/dist/core/multilinePasteHandler.js +80 -0
  200. package/dist/core/multilinePasteHandler.js.map +1 -0
  201. package/dist/core/parallel.d.ts +85 -0
  202. package/dist/core/parallel.d.ts.map +1 -0
  203. package/dist/core/parallel.js +150 -0
  204. package/dist/core/parallel.js.map +1 -0
  205. package/dist/core/parallelCoordinator.d.ts +21 -0
  206. package/dist/core/parallelCoordinator.d.ts.map +1 -0
  207. package/dist/core/parallelCoordinator.js +42 -0
  208. package/dist/core/parallelCoordinator.js.map +1 -0
  209. package/dist/core/parallelExecutor.d.ts +215 -0
  210. package/dist/core/parallelExecutor.d.ts.map +1 -0
  211. package/dist/core/parallelExecutor.js +584 -0
  212. package/dist/core/parallelExecutor.js.map +1 -0
  213. package/dist/core/platformSecurityIntegration.d.ts +133 -0
  214. package/dist/core/platformSecurityIntegration.d.ts.map +1 -0
  215. package/dist/core/platformSecurityIntegration.js +419 -0
  216. package/dist/core/platformSecurityIntegration.js.map +1 -0
  217. package/dist/core/preferences.d.ts +71 -0
  218. package/dist/core/preferences.d.ts.map +1 -0
  219. package/dist/core/preferences.js +341 -0
  220. package/dist/core/preferences.js.map +1 -0
  221. package/dist/core/productTestHarness.d.ts +46 -0
  222. package/dist/core/productTestHarness.d.ts.map +1 -0
  223. package/dist/core/productTestHarness.js +128 -0
  224. package/dist/core/productTestHarness.js.map +1 -0
  225. package/dist/core/providerKeys.d.ts +20 -0
  226. package/dist/core/providerKeys.d.ts.map +1 -0
  227. package/dist/core/providerKeys.js +40 -0
  228. package/dist/core/providerKeys.js.map +1 -0
  229. package/dist/core/realityScore.d.ts +159 -0
  230. package/dist/core/realityScore.d.ts.map +1 -0
  231. package/dist/core/realityScore.js +734 -0
  232. package/dist/core/realityScore.js.map +1 -0
  233. package/dist/core/repoUpgradeOrchestrator.d.ts +223 -0
  234. package/dist/core/repoUpgradeOrchestrator.d.ts.map +1 -0
  235. package/dist/core/repoUpgradeOrchestrator.js +1003 -0
  236. package/dist/core/repoUpgradeOrchestrator.js.map +1 -0
  237. package/dist/core/resultVerification.d.ts +47 -0
  238. package/dist/core/resultVerification.d.ts.map +1 -0
  239. package/dist/core/resultVerification.js +126 -0
  240. package/dist/core/resultVerification.js.map +1 -0
  241. package/dist/core/revenueEnvValidator.d.ts +30 -0
  242. package/dist/core/revenueEnvValidator.d.ts.map +1 -0
  243. package/dist/core/revenueEnvValidator.js +241 -0
  244. package/dist/core/revenueEnvValidator.js.map +1 -0
  245. package/dist/core/schemaValidator.d.ts +49 -0
  246. package/dist/core/schemaValidator.d.ts.map +1 -0
  247. package/dist/core/schemaValidator.js +234 -0
  248. package/dist/core/schemaValidator.js.map +1 -0
  249. package/dist/core/secretStore.d.ts +48 -0
  250. package/dist/core/secretStore.d.ts.map +1 -0
  251. package/dist/core/secretStore.js +295 -0
  252. package/dist/core/secretStore.js.map +1 -0
  253. package/dist/core/securityTournament.d.ts +83 -0
  254. package/dist/core/securityTournament.d.ts.map +1 -0
  255. package/dist/core/securityTournament.js +357 -0
  256. package/dist/core/securityTournament.js.map +1 -0
  257. package/dist/core/selfUpgrade.d.ts +253 -0
  258. package/dist/core/selfUpgrade.d.ts.map +1 -0
  259. package/dist/core/selfUpgrade.js +669 -0
  260. package/dist/core/selfUpgrade.js.map +1 -0
  261. package/dist/core/sessionStorage.d.ts +10 -0
  262. package/dist/core/sessionStorage.d.ts.map +1 -0
  263. package/dist/core/sessionStorage.js +46 -0
  264. package/dist/core/sessionStorage.js.map +1 -0
  265. package/dist/core/sessionStore.d.ts +35 -0
  266. package/dist/core/sessionStore.d.ts.map +1 -0
  267. package/dist/core/sessionStore.js +191 -0
  268. package/dist/core/sessionStore.js.map +1 -0
  269. package/dist/core/taskCompletionDetector.d.ts +112 -0
  270. package/dist/core/taskCompletionDetector.d.ts.map +1 -0
  271. package/dist/core/taskCompletionDetector.js +469 -0
  272. package/dist/core/taskCompletionDetector.js.map +1 -0
  273. package/dist/core/toolPreconditions.d.ts +34 -0
  274. package/dist/core/toolPreconditions.d.ts.map +1 -0
  275. package/dist/core/toolPreconditions.js +242 -0
  276. package/dist/core/toolPreconditions.js.map +1 -0
  277. package/dist/core/toolRuntime.d.ts +185 -0
  278. package/dist/core/toolRuntime.d.ts.map +1 -0
  279. package/dist/core/toolRuntime.js +412 -0
  280. package/dist/core/toolRuntime.js.map +1 -0
  281. package/dist/core/tournamentStrategy.d.ts +12 -0
  282. package/dist/core/tournamentStrategy.d.ts.map +1 -0
  283. package/dist/core/tournamentStrategy.js +41 -0
  284. package/dist/core/tournamentStrategy.js.map +1 -0
  285. package/dist/core/types/utilityTypes.d.ts +192 -0
  286. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  287. package/dist/core/types/utilityTypes.js +272 -0
  288. package/dist/core/types/utilityTypes.js.map +1 -0
  289. package/dist/core/types.d.ts +334 -0
  290. package/dist/core/types.d.ts.map +1 -0
  291. package/dist/core/types.js +76 -0
  292. package/dist/core/types.js.map +1 -0
  293. package/dist/core/unifiedOrchestrator.d.ts +47 -0
  294. package/dist/core/unifiedOrchestrator.d.ts.map +1 -0
  295. package/dist/core/unifiedOrchestrator.js +103 -0
  296. package/dist/core/unifiedOrchestrator.js.map +1 -0
  297. package/dist/core/universalSecurityAudit.d.ts +104 -0
  298. package/dist/core/universalSecurityAudit.d.ts.map +1 -0
  299. package/dist/core/universalSecurityAudit.js +2190 -0
  300. package/dist/core/universalSecurityAudit.js.map +1 -0
  301. package/dist/core/updateChecker.d.ts +148 -0
  302. package/dist/core/updateChecker.d.ts.map +1 -0
  303. package/dist/core/updateChecker.js +593 -0
  304. package/dist/core/updateChecker.js.map +1 -0
  305. package/dist/core/variantExecution.d.ts +23 -0
  306. package/dist/core/variantExecution.d.ts.map +1 -0
  307. package/dist/core/variantExecution.js +58 -0
  308. package/dist/core/variantExecution.js.map +1 -0
  309. package/dist/core/verificationFirst.d.ts +110 -0
  310. package/dist/core/verificationFirst.d.ts.map +1 -0
  311. package/dist/core/verificationFirst.js +312 -0
  312. package/dist/core/verificationFirst.js.map +1 -0
  313. package/dist/core/winnerStrategy.d.ts +15 -0
  314. package/dist/core/winnerStrategy.d.ts.map +1 -0
  315. package/dist/core/winnerStrategy.js +18 -0
  316. package/dist/core/winnerStrategy.js.map +1 -0
  317. package/dist/core/zeroDayDiscovery.d.ts +96 -0
  318. package/dist/core/zeroDayDiscovery.d.ts.map +1 -0
  319. package/dist/core/zeroDayDiscovery.js +358 -0
  320. package/dist/core/zeroDayDiscovery.js.map +1 -0
  321. package/dist/headless/interactiveShell.d.ts +22 -0
  322. package/dist/headless/interactiveShell.d.ts.map +1 -0
  323. package/dist/headless/interactiveShell.js +3832 -0
  324. package/dist/headless/interactiveShell.js.map +1 -0
  325. package/dist/headless/quickMode.d.ts +26 -0
  326. package/dist/headless/quickMode.d.ts.map +1 -0
  327. package/dist/headless/quickMode.js +226 -0
  328. package/dist/headless/quickMode.js.map +1 -0
  329. package/dist/providers/baseProvider.d.ts +148 -0
  330. package/dist/providers/baseProvider.d.ts.map +1 -0
  331. package/dist/providers/baseProvider.js +284 -0
  332. package/dist/providers/baseProvider.js.map +1 -0
  333. package/dist/providers/deepseekReasonerProvider.d.ts +57 -0
  334. package/dist/providers/deepseekReasonerProvider.d.ts.map +1 -0
  335. package/dist/providers/deepseekReasonerProvider.js +87 -0
  336. package/dist/providers/deepseekReasonerProvider.js.map +1 -0
  337. package/dist/providers/openaiChatCompletionsProvider.d.ts +64 -0
  338. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
  339. package/dist/providers/openaiChatCompletionsProvider.js +1000 -0
  340. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
  341. package/dist/providers/providerFactory.d.ts +24 -0
  342. package/dist/providers/providerFactory.d.ts.map +1 -0
  343. package/dist/providers/providerFactory.js +27 -0
  344. package/dist/providers/providerFactory.js.map +1 -0
  345. package/dist/providers/resilientProvider.d.ts +103 -0
  346. package/dist/providers/resilientProvider.d.ts.map +1 -0
  347. package/dist/providers/resilientProvider.js +462 -0
  348. package/dist/providers/resilientProvider.js.map +1 -0
  349. package/dist/runtime/agentController.d.ts +114 -0
  350. package/dist/runtime/agentController.d.ts.map +1 -0
  351. package/dist/runtime/agentController.js +693 -0
  352. package/dist/runtime/agentController.js.map +1 -0
  353. package/dist/runtime/agentHost.d.ts +61 -0
  354. package/dist/runtime/agentHost.d.ts.map +1 -0
  355. package/dist/runtime/agentHost.js +157 -0
  356. package/dist/runtime/agentHost.js.map +1 -0
  357. package/dist/runtime/agentSession.d.ts +45 -0
  358. package/dist/runtime/agentSession.d.ts.map +1 -0
  359. package/dist/runtime/agentSession.js +214 -0
  360. package/dist/runtime/agentSession.js.map +1 -0
  361. package/dist/runtime/agentWorkerPool.d.ts +167 -0
  362. package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
  363. package/dist/runtime/agentWorkerPool.js +435 -0
  364. package/dist/runtime/agentWorkerPool.js.map +1 -0
  365. package/dist/runtime/node.d.ts +7 -0
  366. package/dist/runtime/node.d.ts.map +1 -0
  367. package/dist/runtime/node.js +18 -0
  368. package/dist/runtime/node.js.map +1 -0
  369. package/dist/runtime/universal.d.ts +18 -0
  370. package/dist/runtime/universal.d.ts.map +1 -0
  371. package/dist/runtime/universal.js +21 -0
  372. package/dist/runtime/universal.js.map +1 -0
  373. package/dist/ui/PromptController.d.ts +174 -0
  374. package/dist/ui/PromptController.d.ts.map +1 -0
  375. package/dist/ui/PromptController.js +351 -0
  376. package/dist/ui/PromptController.js.map +1 -0
  377. package/dist/ui/UnifiedUIRenderer.d.ts +779 -0
  378. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
  379. package/dist/ui/UnifiedUIRenderer.js +5458 -0
  380. package/dist/ui/UnifiedUIRenderer.js.map +1 -0
  381. package/dist/ui/animatedStatus.d.ts +140 -0
  382. package/dist/ui/animatedStatus.d.ts.map +1 -0
  383. package/dist/ui/animatedStatus.js +480 -0
  384. package/dist/ui/animatedStatus.js.map +1 -0
  385. package/dist/ui/animation/AnimationScheduler.d.ts +197 -0
  386. package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
  387. package/dist/ui/animation/AnimationScheduler.js +440 -0
  388. package/dist/ui/animation/AnimationScheduler.js.map +1 -0
  389. package/dist/ui/codeHighlighter.d.ts +6 -0
  390. package/dist/ui/codeHighlighter.d.ts.map +1 -0
  391. package/dist/ui/codeHighlighter.js +855 -0
  392. package/dist/ui/codeHighlighter.js.map +1 -0
  393. package/dist/ui/designSystem.d.ts +26 -0
  394. package/dist/ui/designSystem.d.ts.map +1 -0
  395. package/dist/ui/designSystem.js +114 -0
  396. package/dist/ui/designSystem.js.map +1 -0
  397. package/dist/ui/errorFormatter.d.ts +64 -0
  398. package/dist/ui/errorFormatter.d.ts.map +1 -0
  399. package/dist/ui/errorFormatter.js +316 -0
  400. package/dist/ui/errorFormatter.js.map +1 -0
  401. package/dist/ui/globalWriteLock.d.ts +63 -0
  402. package/dist/ui/globalWriteLock.d.ts.map +1 -0
  403. package/dist/ui/globalWriteLock.js +173 -0
  404. package/dist/ui/globalWriteLock.js.map +1 -0
  405. package/dist/ui/index.d.ts +32 -0
  406. package/dist/ui/index.d.ts.map +1 -0
  407. package/dist/ui/index.js +54 -0
  408. package/dist/ui/index.js.map +1 -0
  409. package/dist/ui/interrupts/InterruptManager.d.ts +157 -0
  410. package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
  411. package/dist/ui/interrupts/InterruptManager.js +501 -0
  412. package/dist/ui/interrupts/InterruptManager.js.map +1 -0
  413. package/dist/ui/layout.d.ts +27 -0
  414. package/dist/ui/layout.d.ts.map +1 -0
  415. package/dist/ui/layout.js +184 -0
  416. package/dist/ui/layout.js.map +1 -0
  417. package/dist/ui/maxOffensiveUkraineUI.d.ts +94 -0
  418. package/dist/ui/maxOffensiveUkraineUI.d.ts.map +1 -0
  419. package/dist/ui/maxOffensiveUkraineUI.js +316 -0
  420. package/dist/ui/maxOffensiveUkraineUI.js.map +1 -0
  421. package/dist/ui/outputMode.d.ts +44 -0
  422. package/dist/ui/outputMode.d.ts.map +1 -0
  423. package/dist/ui/outputMode.js +123 -0
  424. package/dist/ui/outputMode.js.map +1 -0
  425. package/dist/ui/overlay/OverlayManager.d.ts +105 -0
  426. package/dist/ui/overlay/OverlayManager.d.ts.map +1 -0
  427. package/dist/ui/overlay/OverlayManager.js +291 -0
  428. package/dist/ui/overlay/OverlayManager.js.map +1 -0
  429. package/dist/ui/premiumComponents.d.ts +54 -0
  430. package/dist/ui/premiumComponents.d.ts.map +1 -0
  431. package/dist/ui/premiumComponents.js +241 -0
  432. package/dist/ui/premiumComponents.js.map +1 -0
  433. package/dist/ui/richText.d.ts +13 -0
  434. package/dist/ui/richText.d.ts.map +1 -0
  435. package/dist/ui/richText.js +444 -0
  436. package/dist/ui/richText.js.map +1 -0
  437. package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
  438. package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
  439. package/dist/ui/telemetry/ResponseTracker.js +60 -0
  440. package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
  441. package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
  442. package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
  443. package/dist/ui/telemetry/UITelemetry.js +446 -0
  444. package/dist/ui/telemetry/UITelemetry.js.map +1 -0
  445. package/dist/ui/textHighlighter.d.ts +83 -0
  446. package/dist/ui/textHighlighter.d.ts.map +1 -0
  447. package/dist/ui/textHighlighter.js +267 -0
  448. package/dist/ui/textHighlighter.js.map +1 -0
  449. package/dist/ui/theme.d.ts +364 -0
  450. package/dist/ui/theme.d.ts.map +1 -0
  451. package/dist/ui/theme.js +471 -0
  452. package/dist/ui/theme.js.map +1 -0
  453. package/dist/ui/toolDisplay.d.ts +221 -0
  454. package/dist/ui/toolDisplay.d.ts.map +1 -0
  455. package/dist/ui/toolDisplay.js +1654 -0
  456. package/dist/ui/toolDisplay.js.map +1 -0
  457. package/dist/ui/uiConstants.d.ts +288 -0
  458. package/dist/ui/uiConstants.d.ts.map +1 -0
  459. package/dist/ui/uiConstants.js +472 -0
  460. package/dist/ui/uiConstants.js.map +1 -0
  461. package/dist/utils/askUserPrompt.d.ts +21 -0
  462. package/dist/utils/askUserPrompt.d.ts.map +1 -0
  463. package/dist/utils/askUserPrompt.js +87 -0
  464. package/dist/utils/askUserPrompt.js.map +1 -0
  465. package/dist/utils/asyncUtils.d.ts +95 -0
  466. package/dist/utils/asyncUtils.d.ts.map +1 -0
  467. package/dist/utils/asyncUtils.js +286 -0
  468. package/dist/utils/asyncUtils.js.map +1 -0
  469. package/dist/utils/debugLogger.d.ts +6 -0
  470. package/dist/utils/debugLogger.d.ts.map +1 -0
  471. package/dist/utils/debugLogger.js +39 -0
  472. package/dist/utils/debugLogger.js.map +1 -0
  473. package/dist/utils/errorUtils.d.ts +12 -0
  474. package/dist/utils/errorUtils.d.ts.map +1 -0
  475. package/dist/utils/errorUtils.js +83 -0
  476. package/dist/utils/errorUtils.js.map +1 -0
  477. package/dist/utils/frontmatter.d.ts +10 -0
  478. package/dist/utils/frontmatter.d.ts.map +1 -0
  479. package/dist/utils/frontmatter.js +78 -0
  480. package/dist/utils/frontmatter.js.map +1 -0
  481. package/dist/utils/packageInfo.d.ts +14 -0
  482. package/dist/utils/packageInfo.d.ts.map +1 -0
  483. package/dist/utils/packageInfo.js +45 -0
  484. package/dist/utils/packageInfo.js.map +1 -0
  485. package/dist/utils/planFormatter.d.ts +34 -0
  486. package/dist/utils/planFormatter.d.ts.map +1 -0
  487. package/dist/utils/planFormatter.js +141 -0
  488. package/dist/utils/planFormatter.js.map +1 -0
  489. package/dist/utils/securityUtils.d.ts +132 -0
  490. package/dist/utils/securityUtils.d.ts.map +1 -0
  491. package/dist/utils/securityUtils.js +324 -0
  492. package/dist/utils/securityUtils.js.map +1 -0
  493. package/dist/workspace.d.ts +8 -0
  494. package/dist/workspace.d.ts.map +1 -0
  495. package/dist/workspace.js +134 -0
  496. package/dist/workspace.js.map +1 -0
  497. package/dist/workspace.validator.d.ts +49 -0
  498. package/dist/workspace.validator.d.ts.map +1 -0
  499. package/dist/workspace.validator.js +215 -0
  500. package/dist/workspace.validator.js.map +1 -0
  501. package/package.json +60 -0
@@ -0,0 +1,472 @@
1
+ /**
2
+ * Centralized UI Constants
3
+ *
4
+ * Single source of truth for all magic numbers, thresholds, and display limits
5
+ * used throughout the UI layer. Prevents inconsistencies and makes tuning easier.
6
+ */
7
+ // ============================================================================
8
+ // TRUNCATION LIMITS
9
+ // ============================================================================
10
+ /**
11
+ * Standard truncation lengths for different content types.
12
+ * All values account for ellipsis character (…) which is 1 char.
13
+ */
14
+ export const TRUNCATE = {
15
+ /** Short paths in compact displays */
16
+ SHORT_PATH: 40,
17
+ /** Full paths in expanded displays */
18
+ LONG_PATH: 80,
19
+ /** Task/tool descriptions */
20
+ DESCRIPTION: 50,
21
+ /** Search queries and patterns */
22
+ QUERY: 40,
23
+ /** Pattern display in search results */
24
+ PATTERN: 30,
25
+ /** Preview lines in collapsed content */
26
+ PREVIEW_LINE: 70,
27
+ /** Error messages */
28
+ ERROR_MESSAGE: 80,
29
+ /** Command display */
30
+ COMMAND: 100,
31
+ /** Generic content truncation */
32
+ DEFAULT: 40,
33
+ };
34
+ /**
35
+ * The ellipsis character to use for truncation.
36
+ * Unicode ellipsis (…) is preferred over three dots (...) for consistency.
37
+ */
38
+ export const ELLIPSIS = '…';
39
+ /**
40
+ * Format for showing additional hidden items.
41
+ */
42
+ export const moreIndicator = (count) => `+${count} more`;
43
+ // ============================================================================
44
+ // PROGRESS BAR CONFIGURATION
45
+ // ============================================================================
46
+ export const PROGRESS = {
47
+ /** Default width for progress bars */
48
+ BAR_WIDTH: 20,
49
+ /** Compact progress bar width */
50
+ COMPACT_WIDTH: 15,
51
+ /** Micro progress indicator width */
52
+ MICRO_WIDTH: 10,
53
+ /** Progress bar characters */
54
+ CHARS: {
55
+ filled: '█',
56
+ empty: '░',
57
+ partial: ['░', '▒', '▓', '█'],
58
+ },
59
+ };
60
+ // ============================================================================
61
+ // STATUS/HEALTH THRESHOLDS
62
+ // ============================================================================
63
+ /**
64
+ * Color thresholds for context/memory usage indicators.
65
+ * Values are percentages (0-100).
66
+ */
67
+ export const CONTEXT_THRESHOLDS = {
68
+ /** Critical - show error color */
69
+ CRITICAL: 90,
70
+ /** Warning - show warning color */
71
+ WARNING: 70,
72
+ /** Info - show info color */
73
+ INFO: 50,
74
+ // Below INFO threshold shows success color
75
+ };
76
+ /**
77
+ * Color thresholds for test coverage displays.
78
+ */
79
+ export const COVERAGE_THRESHOLDS = {
80
+ /** Good coverage - show success color */
81
+ SUCCESS: 80,
82
+ /** Acceptable coverage - show warning color */
83
+ WARNING: 60,
84
+ // Below WARNING threshold shows error color
85
+ };
86
+ /**
87
+ * Color thresholds for token usage displays.
88
+ */
89
+ export const TOKEN_THRESHOLDS = {
90
+ /** High usage - show error color */
91
+ HIGH: 90,
92
+ /** Medium usage - show warning color */
93
+ MEDIUM: 70,
94
+ // Below MEDIUM shows success color
95
+ };
96
+ // ============================================================================
97
+ // DISPLAY LIMITS
98
+ // ============================================================================
99
+ export const DISPLAY_LIMITS = {
100
+ /** Maximum lines to show in inline panels before collapsing */
101
+ INLINE_PANEL_MAX_LINES: 64,
102
+ /** Minimum usable width for content */
103
+ MIN_WIDTH: 20,
104
+ /** Default max width for thinking/reasoning blocks */
105
+ MAX_THOUGHT_WIDTH: 72,
106
+ /** Maximum tool arguments to display inline */
107
+ MAX_INLINE_ARGS: 5,
108
+ /** Maximum collapsed tool results to keep in memory */
109
+ MAX_COLLAPSED_RESULTS: 50,
110
+ /** Preview lines for expandable content */
111
+ PREVIEW_LINES: 5,
112
+ /** Preview lines for tool results */
113
+ TOOL_RESULT_PREVIEW_LINES: 3,
114
+ /** Maximum files to show in search results preview */
115
+ SEARCH_PREVIEW_FILES: 4,
116
+ /** Maximum matches to show in grep results preview */
117
+ GREP_PREVIEW_MATCHES: 3,
118
+ /** Maximum attack targets to display in real-time */
119
+ MAX_ATTACK_TARGETS: 10,
120
+ /** Maximum lines for security scan results */
121
+ MAX_SECURITY_RESULTS: 100,
122
+ /** Maximum ports to show in network scan summaries */
123
+ MAX_SCAN_PORTS: 20,
124
+ /** Maximum vulnerabilities to display in real-time */
125
+ MAX_VULNERABILITIES: 25,
126
+ };
127
+ // ============================================================================
128
+ // TIMING CONSTANTS
129
+ // ============================================================================
130
+ export const TIMING = {
131
+ /** Minimum duration (ms) to show elapsed time */
132
+ MIN_SHOW_DURATION: 1000,
133
+ /** Debounce delay for status updates (ms) */
134
+ STATUS_DEBOUNCE: 100,
135
+ /** Animation frame interval (ms) */
136
+ ANIMATION_INTERVAL: 80,
137
+ /** Spinner animation interval (ms) */
138
+ SPINNER_INTERVAL: 100,
139
+ };
140
+ // ============================================================================
141
+ // UI STRINGS
142
+ // ============================================================================
143
+ export const UI_STRINGS = {
144
+ /** Interrupt hint shown during long operations */
145
+ INTERRUPT_HINT: 'esc to interrupt',
146
+ /** Expand hint for collapsed content */
147
+ EXPAND_HINT: 'ctrl+o to expand',
148
+ /** No matches found */
149
+ NO_MATCHES: 'No matches found',
150
+ /** No output */
151
+ NO_OUTPUT: 'No output',
152
+ /** Loading indicator */
153
+ LOADING: 'Loading…',
154
+ /** Success indicator */
155
+ SUCCESS: '✓',
156
+ /** Failure indicator */
157
+ FAILURE: '✗',
158
+ /** Warning indicator */
159
+ WARNING: '⚠',
160
+ /** Info indicator */
161
+ INFO: 'ℹ',
162
+ /** Pending indicator */
163
+ PENDING: '○',
164
+ /** Offensive security indicators */
165
+ ATTACK_MODE: '⚔ ATTACK MODE',
166
+ RECON_MODE: '🕵️ RECON MODE',
167
+ EXPLOIT_MODE: '💥 EXPLOIT MODE',
168
+ PERSISTENCE_MODE: '🔗 PERSISTENCE MODE',
169
+ DESTRUCTION_MODE: '💀 DESTRUCTION MODE',
170
+ C2_MODE: '🛰 C2 MODE',
171
+ /** Security status indicators */
172
+ TARGET_ACQUIRED: '🎯 TARGET ACQUIRED',
173
+ VULNERABILITY_FOUND: '🔓 VULNERABILITY FOUND',
174
+ EXPLOIT_SUCCESS: '💣 EXPLOIT SUCCESS',
175
+ PERSISTENCE_ESTABLISHED: '🔒 PERSISTENCE ESTABLISHED',
176
+ DATA_EXFILTRATED: '📤 DATA EXFILTRATED',
177
+ INFRASTRUCTURE_COMPROMISED: '🏗 INFRASTRUCTURE COMPROMISED',
178
+ /** Attack phase indicators */
179
+ PHASE_RECON: '🕵️ Phase: Reconnaissance',
180
+ PHASE_SCANNING: '📡 Phase: Scanning',
181
+ PHASE_EXPLOITATION: '💥 Phase: Exploitation',
182
+ PHASE_PERSISTENCE: '🔗 Phase: Persistence',
183
+ PHASE_EXFILTRATION: '📤 Phase: Exfiltration',
184
+ PHASE_DESTRUCTION: '💀 Phase: Destruction',
185
+ /** Real-time monitoring */
186
+ MONITORING_ACTIVE: '👁 MONITORING ACTIVE',
187
+ TARGET_DOWN: '🔴 TARGET DOWN',
188
+ TARGET_UP: '🟢 TARGET UP',
189
+ SERVICE_DEGRADED: '🟡 SERVICE DEGRADED',
190
+ };
191
+ // ============================================================================
192
+ // UTILITY FUNCTIONS
193
+ // ============================================================================
194
+ /**
195
+ * Safely truncate a string with ellipsis.
196
+ * Handles edge cases and ensures consistent truncation.
197
+ */
198
+ export function truncateString(text, maxLength, ellipsis = ELLIPSIS) {
199
+ if (!text || maxLength < 1)
200
+ return '';
201
+ if (text.length <= maxLength)
202
+ return text;
203
+ const truncateAt = Math.max(1, maxLength - ellipsis.length);
204
+ return text.slice(0, truncateAt) + ellipsis;
205
+ }
206
+ /**
207
+ * Truncate a file path, preserving the end (most relevant part).
208
+ * Shows "…/path/to/file.ts" instead of "/very/long/pat…"
209
+ */
210
+ export function truncatePath(path, maxLength, ellipsis = ELLIPSIS) {
211
+ if (!path || maxLength < 1)
212
+ return '';
213
+ if (path.length <= maxLength)
214
+ return path;
215
+ // Keep the end of the path (most relevant)
216
+ const keepLength = Math.max(1, maxLength - ellipsis.length);
217
+ return ellipsis + path.slice(-keepLength);
218
+ }
219
+ /**
220
+ * Calculate percentage with bounds checking.
221
+ * Always returns a value between 0 and 100.
222
+ */
223
+ export function calculatePercentage(current, total) {
224
+ if (total <= 0 || !Number.isFinite(current) || !Number.isFinite(total)) {
225
+ return 0;
226
+ }
227
+ return Math.min(100, Math.max(0, Math.round((current / total) * 100)));
228
+ }
229
+ /**
230
+ * Clamp a percentage value to valid range.
231
+ */
232
+ export function clampPercentage(value) {
233
+ if (!Number.isFinite(value))
234
+ return 0;
235
+ return Math.min(100, Math.max(0, value));
236
+ }
237
+ /**
238
+ * Get color function based on context usage percentage.
239
+ */
240
+ export function getContextColor(percentage, colors) {
241
+ const pct = clampPercentage(percentage);
242
+ if (pct > CONTEXT_THRESHOLDS.CRITICAL)
243
+ return colors.error;
244
+ if (pct > CONTEXT_THRESHOLDS.WARNING)
245
+ return colors.warning;
246
+ if (pct > CONTEXT_THRESHOLDS.INFO)
247
+ return colors.info;
248
+ return colors.success;
249
+ }
250
+ /**
251
+ * Get color function based on coverage percentage.
252
+ */
253
+ export function getCoverageColor(percentage, colors) {
254
+ const pct = clampPercentage(percentage);
255
+ if (pct >= COVERAGE_THRESHOLDS.SUCCESS)
256
+ return colors.success;
257
+ if (pct >= COVERAGE_THRESHOLDS.WARNING)
258
+ return colors.warning;
259
+ return colors.error;
260
+ }
261
+ /**
262
+ * Get color function based on token usage percentage.
263
+ */
264
+ export function getTokenColor(percentage, colors) {
265
+ const pct = clampPercentage(percentage);
266
+ if (pct >= TOKEN_THRESHOLDS.HIGH)
267
+ return colors.error;
268
+ if (pct >= TOKEN_THRESHOLDS.MEDIUM)
269
+ return colors.warning;
270
+ return colors.success;
271
+ }
272
+ /**
273
+ * Format duration in milliseconds to human-readable string.
274
+ * Handles ms, seconds, minutes, and hours.
275
+ */
276
+ export function formatDurationMs(ms) {
277
+ if (!Number.isFinite(ms) || ms < 0)
278
+ return '0ms';
279
+ if (ms < 1000) {
280
+ return `${Math.round(ms)}ms`;
281
+ }
282
+ const seconds = Math.floor(ms / 1000);
283
+ const minutes = Math.floor(seconds / 60);
284
+ const hours = Math.floor(minutes / 60);
285
+ if (hours > 0) {
286
+ const remainingMinutes = minutes % 60;
287
+ return `${hours}h ${remainingMinutes}m`;
288
+ }
289
+ if (minutes > 0) {
290
+ const remainingSeconds = seconds % 60;
291
+ return `${minutes}m ${remainingSeconds}s`;
292
+ }
293
+ return `${seconds}s`;
294
+ }
295
+ /**
296
+ * Format elapsed time from seconds.
297
+ */
298
+ export function formatElapsedSeconds(seconds) {
299
+ return formatDurationMs(seconds * 1000);
300
+ }
301
+ /**
302
+ * Calculate usable width accounting for margins.
303
+ */
304
+ export function calculateUsableWidth(terminalWidth, margins = 4) {
305
+ return Math.max(DISPLAY_LIMITS.MIN_WIDTH, terminalWidth - margins);
306
+ }
307
+ /**
308
+ * Validate and normalize a line count.
309
+ */
310
+ export function normalizeLineCount(lines, defaultValue = 0) {
311
+ if (!Number.isFinite(lines) || lines < 0)
312
+ return defaultValue;
313
+ return Math.floor(lines);
314
+ }
315
+ // ============================================================================
316
+ // ADDITIONAL ROBUST UTILITY FUNCTIONS
317
+ // ============================================================================
318
+ /**
319
+ * Safely format a number with locale-aware separators
320
+ */
321
+ export function formatNumber(value, locale = 'en-US') {
322
+ if (!Number.isFinite(value))
323
+ return '0';
324
+ return value.toLocaleString(locale);
325
+ }
326
+ /**
327
+ * Format bytes to human-readable size
328
+ */
329
+ export function formatBytes(bytes) {
330
+ if (!Number.isFinite(bytes) || bytes < 0)
331
+ return '0 B';
332
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
333
+ let size = bytes;
334
+ let unitIndex = 0;
335
+ while (size >= 1024 && unitIndex < units.length - 1) {
336
+ size /= 1024;
337
+ unitIndex++;
338
+ }
339
+ return `${size.toFixed(unitIndex === 0 ? 0 : 1)} ${units[unitIndex]}`;
340
+ }
341
+ /**
342
+ * Safely split text into lines with consistent line endings
343
+ */
344
+ export function splitLines(text) {
345
+ if (!text)
346
+ return [];
347
+ return text.split(/\r?\n/);
348
+ }
349
+ /**
350
+ * Count visible characters (excluding ANSI codes)
351
+ */
352
+ export function visibleLength(text) {
353
+ if (!text)
354
+ return 0;
355
+ // eslint-disable-next-line no-control-regex
356
+ return text.replace(/\u001B\[[0-9;]*m/g, '').length;
357
+ }
358
+ /**
359
+ * Pad text to width accounting for ANSI codes
360
+ */
361
+ export function padToWidth(text, width, padChar = ' ') {
362
+ const visible = visibleLength(text);
363
+ if (visible >= width)
364
+ return text;
365
+ return text + padChar.repeat(width - visible);
366
+ }
367
+ /**
368
+ * Create a horizontal line/separator
369
+ */
370
+ export function createSeparator(width, char = '─', style) {
371
+ const line = char.repeat(Math.max(0, width));
372
+ return style ? style(line) : line;
373
+ }
374
+ /**
375
+ * Wrap text to fit within width, preserving words
376
+ */
377
+ export function wrapText(text, width) {
378
+ if (!text || width < 1)
379
+ return [''];
380
+ const words = text.split(/\s+/);
381
+ const lines = [];
382
+ let currentLine = '';
383
+ for (const word of words) {
384
+ if (!currentLine) {
385
+ currentLine = word;
386
+ }
387
+ else if (visibleLength(currentLine) + 1 + visibleLength(word) <= width) {
388
+ currentLine += ' ' + word;
389
+ }
390
+ else {
391
+ lines.push(currentLine);
392
+ currentLine = word;
393
+ }
394
+ }
395
+ if (currentLine) {
396
+ lines.push(currentLine);
397
+ }
398
+ return lines.length ? lines : [''];
399
+ }
400
+ /**
401
+ * Indent text by specified amount
402
+ */
403
+ export function indent(text, spaces = 2) {
404
+ if (!text)
405
+ return '';
406
+ const padding = ' '.repeat(Math.max(0, spaces));
407
+ return text.split('\n').map(line => padding + line).join('\n');
408
+ }
409
+ /**
410
+ * Strip ANSI escape codes from text
411
+ * @deprecated Use stripAnsi from layout.ts instead
412
+ */
413
+ export function stripAnsiCodes(text) {
414
+ if (!text)
415
+ return '';
416
+ // eslint-disable-next-line no-control-regex
417
+ return text.replace(/\u001B\[[0-9;]*m/g, '');
418
+ }
419
+ /**
420
+ * Check if text contains ANSI codes
421
+ */
422
+ export function hasAnsiCodes(text) {
423
+ if (!text)
424
+ return false;
425
+ // eslint-disable-next-line no-control-regex
426
+ return /\u001B\[[0-9;]*m/.test(text);
427
+ }
428
+ /**
429
+ * Truncate from middle, keeping start and end
430
+ */
431
+ export function truncateMiddle(text, maxLength, separator = '…') {
432
+ if (!text || maxLength < 3)
433
+ return text?.slice(0, maxLength) ?? '';
434
+ if (text.length <= maxLength)
435
+ return text;
436
+ const keep = Math.floor((maxLength - separator.length) / 2);
437
+ return text.slice(0, keep) + separator + text.slice(-keep);
438
+ }
439
+ /**
440
+ * Safely get a property from an object with type checking
441
+ */
442
+ export function safeGet(obj, key, defaultValue) {
443
+ if (obj && typeof obj === 'object' && key in obj) {
444
+ return obj[key] ?? defaultValue;
445
+ }
446
+ return defaultValue;
447
+ }
448
+ /**
449
+ * Debounce a function call
450
+ */
451
+ export function debounce(fn, delay) {
452
+ let timeoutId = null;
453
+ return ((...args) => {
454
+ if (timeoutId)
455
+ clearTimeout(timeoutId);
456
+ timeoutId = setTimeout(() => fn(...args), delay);
457
+ });
458
+ }
459
+ /**
460
+ * Throttle a function call
461
+ */
462
+ export function throttle(fn, limit) {
463
+ let lastCall = 0;
464
+ return ((...args) => {
465
+ const now = Date.now();
466
+ if (now - lastCall >= limit) {
467
+ lastCall = now;
468
+ fn(...args);
469
+ }
470
+ });
471
+ }
472
+ //# sourceMappingURL=uiConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiConstants.js","sourceRoot":"","sources":["../../src/ui/uiConstants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface AskUserOption {
2
+ label: string;
3
+ description: string;
4
+ }
5
+ export interface AskUserQuestion {
6
+ question: string;
7
+ header: string;
8
+ options: AskUserOption[];
9
+ multiSelect: boolean;
10
+ }
11
+ export declare const MAX_ASK_USER_OPTIONS = 9;
12
+ export declare function formatAskUserPrompt(question: AskUserQuestion, options?: {
13
+ maxOptions?: number;
14
+ width?: number;
15
+ }): {
16
+ lines: string[];
17
+ displayOptions: AskUserOption[];
18
+ instruction: string;
19
+ truncated: boolean;
20
+ };
21
+ //# sourceMappingURL=askUserPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askUserPrompt.d.ts","sourceRoot":"","sources":["../../src/utils/askUserPrompt.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAmDtC,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CA+CA"}
@@ -0,0 +1,87 @@
1
+ import { getTerminalColumns } from '../ui/layout.js';
2
+ import { theme } from '../ui/theme.js';
3
+ export const MAX_ASK_USER_OPTIONS = 9; // Previously 4; allow 5 more to show fuller lists
4
+ const MIN_PANEL_WIDTH = 32;
5
+ const MAX_PANEL_WIDTH = 96;
6
+ // eslint-disable-next-line no-control-regex
7
+ const ANSI_PATTERN = /\u001B\[[0-?]*[ -/]*[@-~]/g;
8
+ const OPTION_COLORS = [
9
+ theme.primary,
10
+ theme.info,
11
+ theme.accent,
12
+ theme.success,
13
+ theme.warning,
14
+ theme.secondary,
15
+ ];
16
+ const stripAnsi = (value) => value.replace(ANSI_PATTERN, '');
17
+ const visibleLength = (value) => stripAnsi(value).length;
18
+ const colorForIndex = (index) => OPTION_COLORS[index % OPTION_COLORS.length] ?? ((value) => value);
19
+ const computePanelWidth = (preferred) => {
20
+ const columns = getTerminalColumns();
21
+ const usable = Number.isFinite(columns) && columns > 0 ? Math.max(columns - 4, MIN_PANEL_WIDTH) : MIN_PANEL_WIDTH;
22
+ const target = preferred ?? 68;
23
+ return Math.max(MIN_PANEL_WIDTH, Math.min(MAX_PANEL_WIDTH, Math.min(target, usable)));
24
+ };
25
+ const wrapText = (text, width) => {
26
+ const limit = Math.max(1, width);
27
+ const words = text.split(/\s+/).filter(Boolean);
28
+ if (!words.length) {
29
+ return [''];
30
+ }
31
+ const lines = [];
32
+ let current = words.shift();
33
+ for (const word of words) {
34
+ const candidate = `${current} ${word}`;
35
+ if (visibleLength(candidate) > limit) {
36
+ lines.push(current);
37
+ current = word;
38
+ }
39
+ else {
40
+ current = candidate;
41
+ }
42
+ }
43
+ lines.push(current);
44
+ return lines;
45
+ };
46
+ export function formatAskUserPrompt(question, options = {}) {
47
+ const panelWidth = computePanelWidth(options.width);
48
+ const maxOptions = Math.max(question.options.length, options.maxOptions ?? question.options.length);
49
+ const displayOptions = question.options.slice(0, maxOptions);
50
+ const truncated = question.options.length > displayOptions.length;
51
+ const divider = theme.ui.muted('─'.repeat(panelWidth));
52
+ const headerLabel = theme.bold(`[${question.header}]`);
53
+ const questionLines = wrapText(question.question, panelWidth - 4);
54
+ const lines = [];
55
+ lines.push(divider);
56
+ lines.push(`${headerLabel} ${questionLines[0] ?? ''}`.trimEnd());
57
+ for (const line of questionLines.slice(1)) {
58
+ lines.push(` ${line}`);
59
+ }
60
+ lines.push(divider);
61
+ for (const [index, option] of displayOptions.entries()) {
62
+ const colorize = colorForIndex(index);
63
+ const optionHeader = `${index + 1}. ${option.label}`;
64
+ const optionLines = wrapText(optionHeader, panelWidth - 4).map(line => colorize(line));
65
+ lines.push(` ${optionLines[0] ?? ''}`.trimEnd());
66
+ for (const line of optionLines.slice(1)) {
67
+ lines.push(` ${line}`);
68
+ }
69
+ const descriptionLines = wrapText(option.description, panelWidth - 6);
70
+ for (const line of descriptionLines) {
71
+ lines.push(` ${theme.ui.muted(line)}`);
72
+ }
73
+ }
74
+ const otherLabel = `${displayOptions.length + 1}. Other (custom input)`;
75
+ lines.push(` ${theme.accent(otherLabel)}`);
76
+ if (truncated) {
77
+ const hiddenCount = question.options.length - displayOptions.length;
78
+ lines.push(theme.warning(` +${hiddenCount} more option${hiddenCount === 1 ? '' : 's'} not shown (use "Other" to specify)`));
79
+ }
80
+ const instruction = question.multiSelect
81
+ ? `Select one or more options (comma-separated numbers, e.g., "${theme.primary('1,3')}").`
82
+ : `Select an option (${theme.primary(`1-${displayOptions.length + 1}`)}).`;
83
+ lines.push(theme.ui.muted(instruction));
84
+ lines.push(divider);
85
+ return { lines, displayOptions, instruction, truncated };
86
+ }
87
+ //# sourceMappingURL=askUserPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askUserPrompt.js","sourceRoot":"","sources":["../../src/utils/askUserPrompt.ts"],"names":[],"mappings":"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"}